diff --git a/adafruit_logging.py b/adafruit_logging.py index d146496..a2db667 100644 --- a/adafruit_logging.py +++ b/adafruit_logging.py @@ -92,6 +92,7 @@ def write(self, buf: str) -> int: "StreamHandler", "logger_cache", "getLogger", + "useTimestamp", "Logger", "NullHandler", "FileHandler", @@ -140,9 +141,26 @@ def _level_for(value: int) -> str: - ``args`` - The additional positional arguments provided """ +context = {"use_timestamp": False} + + +def useTimestamp(new_value): + """ + Whether to time.localtime() timestamp instead of time.monotonic() for the + emitted records. + """ + context["use_timestamp"] = new_value + def _logRecordFactory(name, level, msg, args): - return LogRecord(name, level, _level_for(level), msg, time.monotonic(), args) + return LogRecord( + name, + level, + _level_for(level), + msg, + time.monotonic() if not context["use_timestamp"] else time.localtime(), + args, + ) class Handler: @@ -165,6 +183,10 @@ def format(self, record: LogRecord) -> str: :param record: The record (message object) to be logged """ + if context["use_timestamp"]: + # pylint: disable=line-too-long + return f"{record.created.tm_mon}/{record.created.tm_mday}/{record.created.tm_year - 2000} {record.created.tm_hour}:{record.created.tm_min}:{record.created.tm_sec}:{record.levelname}-{record.msg}" + return f"{record.created:<0.3f}: {record.levelname} - {record.msg}" def emit(self, record: LogRecord) -> None: