Source code for jsktoolbox.logstool.formatters
# -*- coding: UTF-8 -*-
"""
Author: Jacek 'Szumak' Kotlarski --<szumak@virthost.pl>
Created: 2023-10-10
Purpose: Provide reusable log formatter implementations.
Each formatter composes a list of format segments consumed by `BLogFormatter`
to render message payloads consistently across engines.
"""
from datetime import datetime
from ..basetool import BLogFormatter
from ..datetool import Timestamp
[docs]
class LogFormatterNull(BLogFormatter):
"""Provide bare message formatting with optional logger name prefix."""
[docs]
def __init__(self) -> None:
"""Initialise null formatter templates.
### Returns:
None - Populates the formatter template list.
"""
self._forms_.append("{message}")
self._forms_.append("[{name}]: {message}")
[docs]
class LogFormatterDateTime(BLogFormatter):
"""Prefix log messages with the current local date and time."""
[docs]
def __init__(self) -> None:
"""Initialise date-time formatter templates.
### Returns:
None - Populates the formatter template list.
"""
self._forms_.append(self.__get_formatted_date__)
self._forms_.append("{message}")
self._forms_.append("[{name}]: {message}")
[docs]
def __get_formatted_date__(self) -> str:
"""Return the current local datetime string.
### Returns:
str - Timestamp in `%Y-%m-%d %H:%M:%S` format.
"""
return datetime.now().strftime("%Y-%m-%d %H:%M:%S")
[docs]
class LogFormatterTime(BLogFormatter):
"""Prefix log messages with the current local time."""
[docs]
def __init__(self) -> None:
"""Initialise time-only formatter templates.
### Returns:
None - Populates the formatter template list.
"""
self._forms_.append(self.__get_formatted_time__)
self._forms_.append("{message}")
self._forms_.append("[{name}]: {message}")
[docs]
def __get_formatted_time__(self) -> str:
"""Return the current local time string.
### Returns:
str - Timestamp in `%H:%M:%S` format.
"""
return datetime.now().strftime("%H:%M:%S")
[docs]
class LogFormatterTimestamp(BLogFormatter):
"""Prefix log messages with a high-resolution numeric timestamp."""
[docs]
def __init__(self) -> None:
"""Initialise timestamp formatter templates.
### Returns:
None - Populates the formatter template list.
"""
self._forms_.append(Timestamp.now())
self._forms_.append("{message}")
self._forms_.append("[{name}]: {message}")
# #[EOF]#######################################################################