diff --git a/.gitignore b/.gitignore index 4286df6..57a44eb 100644 --- a/.gitignore +++ b/.gitignore @@ -50,6 +50,7 @@ coverage.xml *.py,cover .hypothesis/ .pytest_cache/ +tmp/ # Translations *.mo diff --git a/src/wxflow/logger.py b/src/wxflow/logger.py index b252c76..0eff040 100644 --- a/src/wxflow/logger.py +++ b/src/wxflow/logger.py @@ -236,7 +236,8 @@ def logit(logger: logging.Logger, name: str = None, message: str = None): def decorate(func): log_name = name if name else func.__module__ - log_msg = message if message else log_name + "." + func.__name__ + file_path = func.__code__.co_filename # Get the file path of the function + log_msg = message if message else log_name + "." + func.__name__ + ": " + file_path @wraps(func) def wrapper(*args, **kwargs): diff --git a/tests/test_logger.py b/tests/test_logger.py index 10af54e..850272b 100644 --- a/tests/test_logger.py +++ b/tests/test_logger.py @@ -80,7 +80,7 @@ def test_logger_file(tmp_path, logger_init): f"Expected message '{reference[lev]}' but found '{message}' in log file" -def test_logger_logit(logger_init): +def test_logger_logit_stdout(logger_init): logger = Logger('test_logit', level=level, colored_log=True) @@ -102,3 +102,34 @@ def spam(): spam() assert True + + +def test_logger_logit_logfile(tmp_path, logger_init): + + logfile = tmp_path / "logit.log" + logger = Logger('test_logit', level=level, colored_log=True, logfile_path=logfile) + + @logit(logger) + def add(x, y): + return x + y + + @logit(logger) + def usedict(n, j=0, k=1): + return n + j + k + + @logit(logger, 'example') + def spam(): + print('Spam!') + + add(2, 3) + usedict(2, 3) + usedict(2, k=3) + spam() + + # Verify that file paths are logged + with open(logfile, 'r') as fh: + log_contents = fh.read() + + # Assert that the message contains the test file name full path + assert 'BEGIN: tests.test_logger.add: ' + str(__file__) in log_contents, \ + "Expected test file name to be logged"