logging.config

logging.config 是 Python 标准库中的一个模块,用于配置 Python 程序中的日志系统。它提供了一种灵活的方式来设置日志记录器(logger)、处理器(handler)和格式化器(formatter),以及控制日志的输出级别、格式和目标。以下是 logging.config 的一些关键点和示例:

方法详解

  1. fileConfig 方法
  • 功能 :从一个符合 INI 格式的配置文件中读取日志记录配置,并应用到当前的日志系统中。

  • 参数

  • fname:指定配置文件的名称或文件对象。

  • defaults:可选参数,用于指定传递给 ConfigParser 的默认值。

  • disable_existing_loggers:可选参数,默认为 True。如果为 True,则会禁用任何现有的非根日志记录器,除非它们或它们的上级在日志配置中被显式地指定;如果为 False,则不会禁用已有的日志器。

示例代码

使用 fileConfig 方法

import logging
import logging.config

# 配置文件内容(log.ini)
# [loggers]
# keys=root
#
# [handlers]
# keys=fileHandler
#
# [formatters]
# keys=defaultFormatter
#
# [logger_root]
# level=DEBUG
# handlers=fileHandler
#
# [handler_fileHandler]
# class=logging.handlers.TimedRotatingFileHandler
# level=DEBUG
# formatter=defaultFormatter
# args=('logs/myapp.log', 'midnight', 1, 30)

logging.config.fileConfig('log.ini')

logger = logging.getLogger('root')
logger.debug('This is a debug message')
logger.info('This is an info message')
logger.warning('This is a warning message')
logger.error('This is an error message')
logger.critical('This is a critical message')

使用 dictConfig 方法

import logging
import logging.config

LOGGING_CONFIG = {
    'version': 1,
    'disable_existing_loggers': False,
    'formatters': {
        'simple': {
            'format': '%(asctime)s - %(name)s - %(levelname)s - %(message)s'
        }
    },
    'handlers': {
        'console': {
            'class': 'logging.StreamHandler',
            'formatter': 'simple'
        },
        'file': {
            'class': 'logging.FileHandler',
            'filename': 'application.log',
            'formatter': 'simple'
        }
    },
    'loggers': {
        '': {  # root logger
            'handlers': ['console', 'file'],
            'level': 'DEBUG',
            'propagate': False
        }
    }
}

logging.config.dictConfig(LOGGING_CONFIG)

logger = logging.getLogger('')
logger.debug('This is a debug message')
logger.info('This is an info message')
logger.warning('This is a warning message')
logger.error('This is an error message')
logger.critical('This is a critical message')

总结

  • logging.config 允许通过配置文件或字典来定义日志记录器、处理器和格式化器。

  • 配置文件通常采用 INI 格式,但也可以通过其他格式进行配置。

  • 使用 fileConfig 方法时,需要提供一个符合 INI 格式的配置文件。

  • 使用 dictConfig 方法时,需要提供一个字典,该字典详细描述了日志系统的配置。

通过这些方法,可以灵活地配置和管理 Python 程序中的日志系统,提高开发效率和代码的可维护性。

Top