nwb-linkml/nwb_linkml/tests/test_logging.py
2024-08-14 00:21:48 -07:00

35 lines
1 KiB
Python

from pathlib import Path
from nwb_linkml.logging import init_logger
def test_init_logger(capsys, tmp_path):
"""
We should be able to
- log to file and stdout
- with separable levels
"""
log_dir = Path(tmp_path) / "logs"
log_dir.mkdir()
log_file = log_dir / "nwb_linkml.test_logger.log"
logger = init_logger(name="test_logger", log_dir=log_dir, level="INFO", file_level="WARNING")
warn_msg = "Both loggers should show"
logger.warning(warn_msg)
# can't test for presence of string because logger can split lines depending on size of console
# but there should be one WARNING in stdout
captured = capsys.readouterr()
assert "WARNING" in captured.out
with open(log_file) as lfile:
log_str = lfile.read()
assert "WARNING" in log_str
info_msg = "Now only stdout should show"
logger.info(info_msg)
captured = capsys.readouterr()
assert "INFO" in captured.out
with open(log_file) as lfile:
log_str = lfile.read()
assert "INFO" not in log_str