diff --git a/solnlib/log.py b/solnlib/log.py index 3f1958e1..05815059 100644 --- a/solnlib/log.py +++ b/solnlib/log.py @@ -79,7 +79,7 @@ class Logs(metaclass=Singleton): _default_directory = None _default_namespace = None _default_log_format = ( - "%(asctime)s %(levelname)s pid=%(process)d tid=%(threadName)s " + "%(asctime)s log_level=%(levelname)s pid=%(process)d tid=%(threadName)s " "file=%(filename)s:%(funcName)s:%(lineno)d | %(message)s" ) _default_log_level = logging.INFO diff --git a/tests/unit/test_log.py b/tests/unit/test_log.py index aa0298d4..b29029b4 100644 --- a/tests/unit/test_log.py +++ b/tests/unit/test_log.py @@ -18,10 +18,13 @@ import json import multiprocessing import os +import re import shutil import threading import traceback import time +from textwrap import dedent + import pytest from unittest import mock @@ -300,3 +303,33 @@ class AddonComplexError(Exception): mock_logger.log.assert_called_with( logging.ERROR, f"exc_l={result} \n{traceback.format_exc()}\n" ) + + +def test_log_format(monkeypatch, tmp_path): + log_file = tmp_path / "logging_levels.log" + + monkeypatch.setattr(log.Logs, "_get_log_file", lambda _, name: str(log_file)) + + logger = log.Logs().get_logger("logging_levels") + + logger.warning("log 2") + logger.error("log 3") + + log_content = transform_log(log_file.read_text()) + + assert ( + log_content + == dedent( + """ + 2024-03-23 10:15:20,555 log_level=WARNING pid=1234 tid=MainThread file=test_file.py:test_func:123 | log 2 + 2024-03-23 10:15:20,555 log_level=ERROR pid=1234 tid=MainThread file=test_file.py:test_func:123 | log 3 + """, + ).lstrip() + ) + + +def transform_log(log: str) -> str: + log = re.sub(r"pid=\d+", "pid=1234", log) + log = re.sub(r"file=[^ ]+", "file=test_file.py:test_func:123", log) + log = re.sub(r"\d{4}-\d\d-\d\d \d\d[^ ]+", "2024-03-23 10:15:20,555", log) + return log