You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
5.2 KiB
5.2 KiB
pyTermTk - Logging
Intro
The TTkLog class provide a set of api to allow and configure the logging.
Example 1 - Log to file
import TermTk as ttk
# session.log is used by default
ttk.TTkLog.use_default_file_logging()
ttk.TTkLog.info( "Test Info Messgae")
ttk.TTkLog.debug( "Test Debug Messgae")
ttk.TTkLog.error( "Test Error Messgae")
ttk.TTkLog.warn( "Test Warning Messgae")
ttk.TTkLog.critical("Test Critical Messgae")
ttk.TTkLog.fatal( "Test Fatal Messgae")
Example 2 - Log to stdout
import TermTk as ttk
ttk.TTkLog.use_default_stdout_logging()
ttk.TTkLog.info( "Test Info Messgae")
ttk.TTkLog.debug( "Test Debug Messgae")
ttk.TTkLog.error( "Test Error Messgae")
ttk.TTkLog.warn( "Test Warning Messgae")
ttk.TTkLog.critical("Test Critical Messgae")
ttk.TTkLog.fatal( "Test Fatal Messgae")
Example 3 - custom logging
From example3.customlogging.py
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)
ttk.TTkLog.info( "Test Info Messgae")
ttk.TTkLog.debug( "Test Debug Messgae")
ttk.TTkLog.error( "Test Error Messgae")
ttk.TTkLog.warn( "Test Warning Messgae")
ttk.TTkLog.critical("Test Critical Messgae")
ttk.TTkLog.fatal( "Test Fatal Messgae")
Example 4 - Use TTkLogViewer widget
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)
ttk.TTkLog.info( "Test Info Messgae")
ttk.TTkLog.debug( "Test Debug Messgae")
ttk.TTkLog.error( "Test Error Messgae")
ttk.TTkLog.warn( "Test Warning Messgae")
ttk.TTkLog.critical("Test Critical Messgae")
ttk.TTkLog.fatal( "Test Fatal Messgae")
# Start the Main loop
root.mainloop()
The above code produces the following output
╔══════════════════════════════════════════════════════════════════════════════╗
║ LogViewer Window ║
╟──────────────────────────────────────────────────────────────────────────────╢
║ ║
║INFO : tutorial/logging/example4.ttklogviewer.py:36 Test Info Messgae ║
║DEBUG: tutorial/logging/example4.ttklogviewer.py:37 Test Debug Messgae ║
║ERROR: tutorial/logging/example4.ttklogviewer.py:38 Test Error Messgae ║
║WARNING : tutorial/logging/example4.ttklogviewer.py:39 Test Warning Messgae ║
║CRITICAL: tutorial/logging/example4.ttklogviewer.py:40 Test Critical Messgae ║
║FATAL: tutorial/logging/example4.ttklogviewer.py:41 Test Fatal Messgae ║
║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 ║
║ ║
║ ║
║ ║
║◀▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓┄┄┄┄┄┄┄┄┄┄┄▶║
╚══════════════════════════════════════════════════════════════════════════════╝