graphrag/tests/integration/logging/test_standard_logging.py
Derek Worthen e0cce31f54
Some checks failed
Python Build and Type Check / python-ci (ubuntu-latest, 3.11) (push) Has been cancelled
Python Build and Type Check / python-ci (ubuntu-latest, 3.12) (push) Has been cancelled
Python Build and Type Check / python-ci (windows-latest, 3.11) (push) Has been cancelled
Python Build and Type Check / python-ci (windows-latest, 3.12) (push) Has been cancelled
Python Integration Tests / python-ci (ubuntu-latest, 3.12) (push) Has been cancelled
Python Integration Tests / python-ci (windows-latest, 3.12) (push) Has been cancelled
Python Notebook Tests / python-ci (ubuntu-latest, 3.12) (push) Has been cancelled
Python Notebook Tests / python-ci (windows-latest, 3.12) (push) Has been cancelled
Python Smoke Tests / python-ci (ubuntu-latest, 3.12) (push) Has been cancelled
Python Smoke Tests / python-ci (windows-latest, 3.12) (push) Has been cancelled
Python Unit Tests / python-ci (ubuntu-latest, 3.12) (push) Has been cancelled
Python Unit Tests / python-ci (windows-latest, 3.12) (push) Has been cancelled
Graphrag config (#2119)
* Add load_config to graphrag-common package.
2025-11-10 07:57:03 -08:00

136 lines
4.1 KiB
Python

# Copyright (c) 2024 Microsoft Corporation.
# Licensed under the MIT License
"""Tests for standard logging functionality."""
import logging
import os
import tempfile
from pathlib import Path
from graphrag.logger.standard_logging import DEFAULT_LOG_FILENAME, init_loggers
from tests.unit.config.utils import get_default_graphrag_config
def test_standard_logging():
"""Test that standard logging works."""
logger = logging.getLogger("graphrag.test")
assert logger.name == "graphrag.test"
def test_logger_hierarchy():
"""Test that logger hierarchy works correctly."""
# reset logging to default state using init_loggers
config = get_default_graphrag_config()
init_loggers(config)
root_logger = logging.getLogger("graphrag")
child_logger = logging.getLogger("graphrag.child")
# setting level on root should affect children
root_logger.setLevel(logging.ERROR)
assert child_logger.getEffectiveLevel() == logging.ERROR
# clean up after test
root_logger.handlers.clear()
def test_init_loggers_file_config():
"""Test that init_loggers works with file configuration."""
with tempfile.TemporaryDirectory() as temp_dir:
# Need to manually change cwd since we are not using load_config
# to create graphrag config.
cwd = Path.cwd()
os.chdir(temp_dir)
config = get_default_graphrag_config()
# call init_loggers with file config
init_loggers(config=config)
logger = logging.getLogger("graphrag")
# should have a file handler
file_handlers = [
h for h in logger.handlers if isinstance(h, logging.FileHandler)
]
assert len(file_handlers) > 0
# test that logging works
test_message = "Test init_loggers file message"
logger.info(test_message)
# check that the log file was created
log_file = Path(temp_dir) / "logs" / DEFAULT_LOG_FILENAME
assert log_file.exists()
with open(log_file) as f:
content = f.read()
assert test_message in content
# clean up
for handler in logger.handlers[:]:
if isinstance(handler, logging.FileHandler):
handler.close()
logger.handlers.clear()
os.chdir(cwd)
def test_init_loggers_file_verbose():
"""Test that init_loggers works with verbose flag."""
with tempfile.TemporaryDirectory() as temp_dir:
# Need to manually change cwd since we are not using load_config
# to create graphrag config.
cwd = Path.cwd()
os.chdir(temp_dir)
config = get_default_graphrag_config()
# call init_loggers with file config
init_loggers(config=config, verbose=True)
logger = logging.getLogger("graphrag")
# test that logging works
test_message = "Test init_loggers file message"
logger.debug(test_message)
# check that the log file was created
log_file = Path(temp_dir) / "logs" / DEFAULT_LOG_FILENAME
with open(log_file) as f:
content = f.read()
assert test_message in content
# clean up
for handler in logger.handlers[:]:
if isinstance(handler, logging.FileHandler):
handler.close()
logger.handlers.clear()
os.chdir(cwd)
def test_init_loggers_custom_filename():
"""Test that init_loggers works with custom filename."""
with tempfile.TemporaryDirectory() as temp_dir:
# Need to manually change cwd since we are not using load_config
# to create graphrag config.
cwd = Path.cwd()
os.chdir(temp_dir)
config = get_default_graphrag_config()
# call init_loggers with file config
init_loggers(config=config, filename="custom-log.log")
logger = logging.getLogger("graphrag")
# check that the log file was created
log_file = Path(temp_dir) / "logs" / "custom-log.log"
assert log_file.exists()
# clean up
for handler in logger.handlers[:]:
if isinstance(handler, logging.FileHandler):
handler.close()
logger.handlers.clear()
os.chdir(cwd)