Initial project import
This commit is contained in:
commit
23f2d29e32
11957 files changed
+1754577
No files matched your search
@@ -0,0 +1,67 @@
|
||||
import os
|
||||
import log
|
||||
import rand
|
||||
|
||||
fn test_reopen() {
|
||||
if os.user_os() == 'windows' && os.getenv('SKIP_TEST_REOPEN') == '' {
|
||||
eprintln('skip renaming and reopening a log file on windows')
|
||||
exit(0)
|
||||
}
|
||||
lfolder := os.join_path(os.vtmp_dir(), rand.ulid())
|
||||
lpath1 := os.join_path(lfolder, 'current.log')
|
||||
lpath2 := os.join_path(lfolder, 'current.log.2')
|
||||
os.mkdir_all(lfolder)!
|
||||
|
||||
dump(lfolder)
|
||||
mut l := log.new_thread_safe_log()
|
||||
l.set_level(.debug)
|
||||
l.set_full_logpath(lpath1)
|
||||
l.warn('one warning')
|
||||
l.error('one error')
|
||||
// simulate a log rotation, by moving the log file
|
||||
os.rename(lpath1, lpath2)!
|
||||
l.warn('another warning')
|
||||
// call reopen, note that the message from above, should be in the new file lpath2:
|
||||
l.reopen()!
|
||||
l.warn('third warning')
|
||||
l.flush()
|
||||
l.close()
|
||||
// os.system('ls -la ${lpath1} ${lpath2}')
|
||||
lcontent1 := os.read_file(lpath1)!
|
||||
lcontent2 := os.read_file(lpath2)!
|
||||
assert lcontent1.len > 0
|
||||
assert lcontent2.len > 0
|
||||
// the rotated log should have all messages before the l.reopen() call:
|
||||
assert lcontent2.contains('one warning')
|
||||
assert lcontent2.contains('one error')
|
||||
assert lcontent2.contains('another warning')
|
||||
// the log file that was reopened, should have only the new message:
|
||||
assert lcontent1.contains('third warning')
|
||||
assert !lcontent1.contains('one warning')
|
||||
|
||||
os.rmdir_all(lfolder) or {}
|
||||
}
|
||||
|
||||
fn test_set_always_flush() {
|
||||
log.set_level(.debug)
|
||||
lfolder := os.join_path(os.vtmp_dir(), rand.ulid())
|
||||
lpath1 := os.join_path(lfolder, 'current.log')
|
||||
os.mkdir_all(lfolder)!
|
||||
defer {
|
||||
os.rmdir_all(lfolder) or {}
|
||||
}
|
||||
dump(lfolder)
|
||||
mut l := log.Log{}
|
||||
l.set_level(.info)
|
||||
l.set_full_logpath(lpath1)
|
||||
l.set_always_flush(true)
|
||||
l.warn('one warning')
|
||||
l.info('one info message')
|
||||
l.error('one error')
|
||||
l.close()
|
||||
lcontent1 := os.read_file(lpath1)!
|
||||
assert lcontent1.len > 0
|
||||
assert lcontent1.contains('one warning')
|
||||
assert lcontent1.contains('one error')
|
||||
assert lcontent1.contains('one info message')
|
||||
}
|
||||
Reference in new issue
Block a user