Skip to content

Configuration (dictConfig, fileConfig)

Configure logging using dictConfig for Python dicts or fileConfig for configuration files.

dictConfig - Dictionary Configuration

Configure logging with a dictionary.

import logging.config

config = {
    'version': 1,
    'formatters': {
        'standard': {
            'format': '%(asctime)s - %(name)s - %(levelname)s - %(message)s'
        }
    },
    'handlers': {
        'console': {
            'class': 'logging.StreamHandler',
            'formatter': 'standard',
            'level': 'INFO'
        }
    },
    'loggers': {
        'myapp': {
            'handlers': ['console'],
            'level': 'DEBUG'
        }
    }
}

logging.config.dictConfig(config)
logger = logging.getLogger('myapp')
logger.info("Application started")
2026-02-12 12:34:56,789 - myapp - INFO - Application started

fileConfig - Configuration File

Configure logging from an INI file.

import logging.config
import tempfile
import os

# Create temporary config file
config_content = '''[loggers]
keys=root,myapp

[handlers]
keys=console

[formatters]
keys=standard

[logger_root]
level=WARNING
handlers=console

[logger_myapp]
level=DEBUG
handlers=console
qualname=myapp

[handler_console]
class=StreamHandler
level=DEBUG
formatter=standard
args=(sys.stdout,)

[formatter_standard]
format=%(asctime)s - %(name)s - %(levelname)s - %(message)s
'''

# Write config to temp file
with tempfile.NamedTemporaryFile(mode='w', suffix='.conf', delete=False) as f:
    f.write(config_content)
    config_path = f.name

try:
    logging.config.fileConfig(config_path)
    logger = logging.getLogger('myapp')
    logger.info("Configured from file")
finally:
    os.unlink(config_path)
2026-02-12 12:34:56,789 - myapp - INFO - Configured from file