|
|
|
|
# [pyTermTk](https://github.com/ceccopierangiolieugenio/pyTermTk) - Logging
|
|
|
|
|
|
|
|
|
|
## Intro
|
|
|
|
|
The [TTkLog](https://ceccopierangiolieugenio.github.io/pyTermTk/TTkCore/log.html) class provide a set of api to allow and configure the logging.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## Example 1 - Log to file
|
|
|
|
|
From [example1.logtofile.py](logging/example1.logtofile.py)
|
|
|
|
|
|
|
|
|
|
```python
|
|
|
|
|
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 ](logging/example2.logtostdout.py )
|
|
|
|
|
```python
|
|
|
|
|
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 ](logging/example3.customlogging.py )
|
|
|
|
|
```python
|
|
|
|
|
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](https://ceccopierangiolieugenio.github.io/pyTermTk/TTkTestWidgets/logviewer.html) widget
|
|
|
|
|
From [example4.ttklogviewer.py](logging/example4.ttklogviewer.py)
|
|
|
|
|
```python
|
|
|
|
|
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
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
╔══════════════════════════════════════════════════════════════════════════════╗
|
|
|
|
|
║ 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 ║
|
|
|
|
|
║ ║
|
|
|
|
|
║ ║
|
|
|
|
|
║ ║
|
|
|
|
|
║◀▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓┄┄┄┄┄┄┄┄┄┄┄▶║
|
|
|
|
|
╚══════════════════════════════════════════════════════════════════════════════╝
|
|
|
|
|
```
|