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

pyTermTk - Logging

Intro

The TTkLog class provide a set of api to allow and configure the logging.

Example 1 - Log to file

From example1.logtofile.py

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

From example2.logtostdout.py

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

From example4.ttklogviewer.py

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   ║
║                                                                              ║
║                                                                              ║
║                                                                              ║
║◀▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓┄┄┄┄┄┄┄┄┄┄┄▶║
╚══════════════════════════════════════════════════════════════════════════════╝