- Testing global log functions 01:02:03 tst : from log.log() 01:02:03 tst : DBG: from log.dbg() 01:02:03 tst : ERR: from log.err() - Testing log.Origin functions 01:02:03 tst some-name(some='detail'): hello log 01:02:03 tst some-name(some='detail'): ERR: hello err 01:02:03 tst some-name(some='detail'): message {int=3, none=None, str='str\n', tuple=('foo', 42)} 01:02:03 tst some-name(some='detail'): DBG: hello dbg - Testing log.style() 01:02:03: only time tst: only category DBG: only level some-name(some='detail'): only origin only src [log_test.py:69] - Testing log.style_change() no log format 01:02:03: add time but no time format 01:02:03: DBG: add level 01:02:03 tst: DBG: add category 01:02:03 tst: DBG: add src [log_test.py:84] 01:02:03 tst some-name(some='detail'): DBG: add origin [log_test.py:86] - Testing origin_width 01:02:03 tst shortname: origin str set to 23 chars [log_test.py:91] 01:02:03 tst very long name(and_some=(3, 'things', 'in a tuple'), some='details'): long origin str [log_test.py:93] 01:02:03 tst very long name(and_some=(3, 'things', 'in a tuple'), some='details'): DBG: long origin str dbg [log_test.py:94] 01:02:03 tst very long name(and_some=(3, 'things', 'in a tuple'), some='details'): ERR: long origin str err [log_test.py:95] - Testing log.Origin with omitted info 01:02:03 tst LogTest: hello log, name implicit from class name [log_test.py:99] 01:02:03 --- explicit_name: hello log, no category set [log_test.py:103] 01:02:03 --- LogTest: hello log, no category nor name set [log_test.py:107] 01:02:03 --- LogTest: DBG: debug message, no category nor name set [log_test.py:110] - Testing logging of Exceptions, tracing origins nested print just prints 01:02:03 tst level3: nested log() [level1↪level2↪level3] [log_test.py:132] 01:02:03 tst level2: nested l2 log() from within l3 scope [level1↪level2] [log_test.py:133] 01:02:03 tst level3: ERR: ValueError: bork [level1↪level2↪level3] [log_test.py:134: raise ValueError('bork')] - Disallow origin loops disallowed successfully