pyTermTk - Logging
Intro
The TTkLog class provide a set of api to allow and configure the logging.
Examples
Example 1 - Log to file
From example1.logtofile.py (tryItOnline):
import TermTk as ttk
# session.log is used by default
ttk.TTkLog.use_default_file_logging()
# Push some Debug messages
ttk.TTkLog.info( "Test Info Message")
ttk.TTkLog.debug( "Test Debug Message")
ttk.TTkLog.error( "Test Error Message")
ttk.TTkLog.warn( "Test Warning Message")
ttk.TTkLog.critical("Test Critical Message")
Example 2 - Log to stdout
From example2.logtostdout.py (tryItOnline):
import TermTk as ttk
ttk.TTkLog.use_default_stdout_logging()
# Push some Debug messages
ttk.TTkLog.info( "Test Info Message")
ttk.TTkLog.debug( "Test Debug Message")
ttk.TTkLog.error( "Test Error Message")
ttk.TTkLog.warn( "Test Warning Message")
ttk.TTkLog.critical("Test Critical Message")
ttk.TTkLog.fatal( "Test Fatal Message")
Example 3 - custom logging
From example3.customlogging.py (tryItOnline):
import TermTk as ttk
# define the callback used to process the log message
def message_handler(mode, context, message):
msgType = "NONE"
if mode == ttk.TTkLog.InfoMsg: msgType = "[INFO]"
elif mode == ttk.TTkLog.WarningMsg: msgType = "[WARNING]"
elif mode == ttk.TTkLog.CriticalMsg: msgType = "[CRITICAL]"
elif mode == ttk.TTkLog.FatalMsg: msgType = "[FATAL]"
elif mode == ttk.TTkLog.ErrorMsg: msgType = "[ERROR]"
print(f"{msgType} {context.file} {message}")
# Register the callback to the message handler
ttk.TTkLog.installMessageHandler(message_handler)
# Push some Debug messages
ttk.TTkLog.info( "Test Info Message")
ttk.TTkLog.debug( "Test Debug Message")
ttk.TTkLog.error( "Test Error Message")
ttk.TTkLog.warn( "Test Warning Message")
ttk.TTkLog.critical("Test Critical Message")
ttk.TTkLog.fatal( "Test Fatal Message")
Example 4 - Use TTkLogViewer widget
From example4.ttklogviewer.py (tryItOnline):
import TermTk as ttk
root = ttk.TTk()
# Create a window and attach it to the root (parent=root)
logWin = ttk.TTkWindow(parent=root,pos = (1,1), size=(80,20), title="LogViewer Window", border=True, layout=ttk.TTkVBoxLayout())
# Attach the logViewer widget to the window
ttk.TTkLogViewer(parent=logWin)
# Push some Debug messages
ttk.TTkLog.info( "Test Info Message")
ttk.TTkLog.debug( "Test Debug Message")
ttk.TTkLog.error( "Test Error Message")
ttk.TTkLog.warn( "Test Warning Message")
ttk.TTkLog.critical("Test Critical Message")
ttk.TTkLog.fatal( "Test Fatal Message")
# Start the Main loop
root.mainloop()
The above code produces the following output
╔══════════════════════════════════════════════════════════════════════════════╗
║ LogViewer Window ║
╟──────────────────────────────────────────────────────────────────────────────╢
║ ║
║INFO : tutorial/logging/example4.ttklogviewer.py:36 Test Info Message ║
║DEBUG: tutorial/logging/example4.ttklogviewer.py:37 Test Debug Message ║
║ERROR: tutorial/logging/example4.ttklogviewer.py:38 Test Error Message ║
║WARNING : tutorial/logging/example4.ttklogviewer.py:39 Test Warning Message ║
║CRITICAL: tutorial/logging/example4.ttklogviewer.py:40 Test Critical Message ║
║FATAL: tutorial/logging/example4.ttklogviewer.py:41 Test Fatal Message ║
║DEBUG: _/.venv/lib/python3.8/site-packages/TermTk/TTkCore/ttk.py:70 Starting M║
║DEBUG: _/.venv/lib/python3.8/site-packages/TermTk/TTkCore/ttk.py:80 Signal Eve║
║DEBUG: _/.venv/lib/python3.8/site-packages/TermTk/TTkCore/ttk.py:65 fps: 33 ║
║DEBUG: _/.venv/lib/python3.8/site-packages/TermTk/TTkCore/ttk.py:65 fps: 34 ║
║DEBUG: _/.venv/lib/python3.8/site-packages/TermTk/TTkCore/ttk.py:65 fps: 34 ║
║ ║
║ ║
║ ║
║◀▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓┄┄┄┄┄┄┄┄┄┄┄▶║
╚══════════════════════════════════════════════════════════════════════════════╝