使用Python的logging.config.fileConfig配置日志

本文详细介绍了Python中使用logging.config.fileConfig方式配置日志的方法,通过解析conf配置文件实现不同类型的日志输出,包括控制台、单文件及滚动文件日志。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Python的logging.config.fileConfig方式配置日志,通过解析conf配置文件实现。文件 logglogging.conf 配置如下:

[loggers]
keys=root,fileLogger,rotatingFileLogger

[handlers]
keys=consoleHandler,fileHandler,rotatingFileHandler

[formatters]
keys=simpleFormatter

[logger_root]
level=DEBUG
handlers=consoleHandler

[logger_fileLogger]
level=DEBUG
# 该logger中配置的handler
handlers=fileHandler
# logger 的名称
qualname=fileLogger
propagate=0

[logger_rotatingFileLogger]
level=DEBUG
# 这样配置,rotatingFileLogger中就同时配置了consoleHandler,rotatingFileHandler
# consoleHandler 负责将日志输出到控制台
# rotatingFileHandler 负责将日志输出保存到文件中
handlers=consoleHandler,rotatingFileHandler
qualname=rotatingFileLogger
propagate=0

[handler_consoleHandler]
class=StreamHandler
level=DEBUG
formatter=simpleFormatter
args=(sys.stdout,)

[handler_fileHandler]
class=FileHandler
level=DEBUG
formatter=simpleFormatter
args=('logs/logging.log', 'a')

[handler_rotatingFileHandler]
class=handlers.RotatingFileHandler
level=WARNING
formatter=simpleFormatter
args=("logs/rotating_logging.log", "a", 1*1024*1024, 5)

[formatter_simpleFormatter]
#format=%(asctime)s - %(name)s - %(levelname)s - %(message)s
format=%(asctime)s - %(module)s - %(thread)d - %(levelname)s : %(message)s
datefmt=%Y-%m-%d %H:%M:%S

以上配置文件主要包含以下几部分:

  1. loggers : 配置logger信息。必须包含一个名字叫做root的logger,当使用无参函数logging.getLogger()时,默认返回root这个logger,其他自定义logger可以通过 logging.getLogger("fileLogger") 方式进行调用
  2. handlers:定义声明handlers信息。常用的handlers包括 StreamHandler(仅将日志输出到kong控制台)、FileHandler(将日志信息输出保存到文件)、RotaRotatingFileHandler(将日志输出保存到文件中,并设置单个日志wenj文件的大小和日志文件个数)
  3. formatter : 设置日志格式
  4. logger_xxx : 对loggers中声明的logger进行逐个配置,且要一一对应
  5. handler_xxx : 对handlers中声明的handler进行逐个配置,且要一一对应
  6. formatter_xxx : 对声明的formatterjinx进行配置

  • 代码示例
logging.config.fileConfig(“logging.conf”)

# 输出日志到控制台,获取的是root对应的logger
console_logger = logging.getLogger()

# 输出日志到单个文件
file_logger = logging.getLogger(name="fileLogger")

# rotatingFileLogger中额consoleHandler输出到控制台,rotatingHandler输出日志到文件
rotating_logger = logging.getLogger(name="rotatingFileLogger")

  • 友情提示

进行以上配置后,在项目中需要进行日志输出的地方通过logging.getLogger()方式就可以获取到du应的logger,然后就可以使用logger.info("xxx")jinx进行日志输出了。

使用这种方式配置日志,一定要在项目的入口函数中就调用 logging.config.fileConfig(“logging.conf”)函数,因为 logging.conf 文件中,在handler中配置的是日志文件的相对地址,如果在其他代码文件中进行调用,由于相对地址的原因,将导致日志文件会出现在yixi意想不到的位置。

要将自定义的CustomTimedRotatingFileHandler类与logging.config.fileConfig()一起使用,需要进行以下步骤: 1. 创建一个配置文件,例如`logging.conf`,使用INI格式,并在其中定义你的日志配置。在配置文件中,使用`handler_class`参数来指定自定义的处理器类。 ```ini [loggers] keys=root [handlers] keys=custom_handler [formatters] keys=custom_formatter [logger_root] level=DEBUG handlers=custom_handler [handler_custom_handler] class=path.to.CustomTimedRotatingFileHandler level=DEBUG formatter=custom_formatter args=('example.log', 'midnight', 1, 0) [formatter_custom_formatter] format=%(asctime)s - %(levelname)s - %(message)s ``` 2.Python代码中,使用`logging.config.fileConfig()`函数加载配置文件: ```python import logging import logging.config logging.config.fileConfig('logging.conf') 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') ``` 在上述代码中,`logging.config.fileConfig()`函数会读取指定的配置文件,并根据配置文件中的内容进行日志配置配置文件中的`handler_custom_handler`部分定义了使用自定义的处理器类`CustomTimedRotatingFileHandler`,并将其应用于根日志记录器(`logger_root`)。 确保将`path.to.CustomTimedRotatingFileHandler`替换为实际的自定义处理器类的路径。同时,根据你的需求,可以在配置文件中调整处理器类的参数。 通过这种方式,你可以将自定义的处理器类与logging模块的配置机制相结合,灵活地配置和管理日志记录。
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值