ai-station/.venv/lib/python3.12/site-packages/textual/logging.py

41 lines
1.2 KiB
Python
Raw Normal View History

2025-12-25 14:54:33 +00:00
"""
A Textual Logging handler.
If there is an active Textual app, then log messages will go via the app (and logged via textual console).
If there is *no* active app, then log messages will go to stderr or stdout, depending on configuration.
"""
import sys
from logging import Handler, LogRecord
from textual._context import active_app
class TextualHandler(Handler):
"""A Logging handler for Textual apps."""
def __init__(self, stderr: bool = True, stdout: bool = False) -> None:
"""Initialize a Textual logging handler.
Args:
stderr: Log to stderr when there is no active app.
stdout: Log to stdout when there is no active app.
"""
super().__init__()
self._stderr = stderr
self._stdout = stdout
def emit(self, record: LogRecord) -> None:
"""Invoked by logging."""
message = self.format(record)
try:
app = active_app.get()
except LookupError:
if self._stderr:
print(message, file=sys.stderr)
elif self._stdout:
print(message, file=sys.stdout)
else:
app.log.logging(message)