{"library":"pytest-logger","title":"pytest-logger","description":"pytest-logger is a pytest plugin that configures handlers for loggers from Python's standard `logging` module. It allows directing logs to the terminal or files in a configurable manner. The current version is 1.1.1, released on March 10, 2024, indicating active maintenance and an irregular release cadence.","language":"python","status":"active","last_verified":"Mon May 18","install":{"commands":["pip install pytest-logger"],"cli":null},"imports":["# Defined in conftest.py\ndef pytest_logger_config(logger_config):","import logging"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"# content of conftest.py\nimport os\nimport logging\n\ndef pytest_logger_config(logger_config):\n    logger_config.add_loggers(['foo', 'bar'], stdout_level='info', file_level='debug')\n    logger_config.set_log_option_default('foo,bar')\n\ndef pytest_logger_logdirlink(config):\n    return os.path.join(os.path.dirname(__file__), 'logs')\n\n# content of test_example.py\nimport logging\n\nfoo_logger = logging.getLogger('foo')\nbar_logger = logging.getLogger('bar')\nbaz_logger = logging.getLogger('baz')\n\ndef test_logging_output():\n    foo_logger.info('This is an INFO message from foo')\n    bar_logger.debug('This is a DEBUG message from bar, only in file')\n    baz_logger.warning('This is a WARNING from baz, not configured by default')\n    assert True\n\n# To run: pytest -s -v --log-cli-level=info --loggers=foo,bar test_example.py\n# This will output foo INFO messages to console and foo (INFO) and bar (DEBUG) to files in the 'logs' directory.","lang":"python","description":"To quickly get started, define `pytest_logger_config` and `pytest_logger_logdirlink` hooks in your `conftest.py` to set up loggers and a directory for log files. Then, use standard Python's `logging` module within your test files. Run pytest with `-s` to see real-time console output, and specify which loggers to display with `--loggers` and their console level with `--log-cli-level`.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":{"tag":null,"tag_description":null,"last_tested":"2026-05-18","installed_version":"1.1.1","pypi_latest":"1.1.1","is_stale":false,"summary":{"python_range":"3.10–3.9","success_rate":100,"avg_install_s":2.7,"avg_import_s":null,"wheel_type":"wheel"},"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"pytest-logger","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":"30.7M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"pytest-logger","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":2.8,"import_time_s":null,"mem_mb":null,"disk_size":"31M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"pytest-logger","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":"33.6M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"pytest-logger","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":2.6,"import_time_s":null,"mem_mb":null,"disk_size":"34M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"pytest-logger","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":"25.2M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"pytest-logger","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":2.5,"import_time_s":null,"mem_mb":null,"disk_size":"26M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"pytest-logger","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":"25.0M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"pytest-logger","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":2.4,"import_time_s":null,"mem_mb":null,"disk_size":"26M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"pytest-logger","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":"30.0M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"pytest-logger","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":3.2,"import_time_s":null,"mem_mb":null,"disk_size":"31M"}]}}