logging.config
是 Python 标准库中的一个模块,用于配置 Python 程序中的日志系统。它提供了一种灵活的方式来设置日志记录器(logger)、处理器(handler)和格式化器(formatter),以及控制日志的输出级别、格式和目标。以下是 logging.config
的一些关键点和示例:
方法详解
- 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 程序中的日志系统,提高开发效率和代码的可维护性。