下面是关于Python logging日志模块配置文件方式的完整攻略:
1. logging模块简介
Python中的logging模块提供了一个灵活而高度可定制化的日志系统,可以记录代码运行时的详细信息,方便开发人员进行调试。logging模块支持不同的日志级别,可以随时更改日志级别,还可以同时向多个输出目标记录日志信息。
logging模块提供了两种使用方式:基本配置方式和配置文件方式。基本配置方式通常用于快速设置简单的日志系统,而配置文件方式则更加灵活,适用于需要更好的定制化和管理的场景。
2. 配置文件方式介绍
logging模块的配置文件是一个包含了Python代码和配置信息的文本文件,通过读取该文件来配置logging模块。配置文件中可以设置logging模块的各种参数,如日志输出目标、日志级别、输出格式等。
通常情况下,我们会将logging配置文件命名为logging.conf或logging.ini,文件格式为ini格式或者是配置文件格式。
下面是一个典型的logging配置文件:
[loggers]
keys=root,sampleLogger
[handlers]
keys=fileHandler,consoleHandler
[formatters]
keys=simpleFormatter,complexFormatter
[logger_root]
level=DEBUG
handlers=fileHandler,consoleHandler
[logger_sampleLogger]
level=DEBUG
handlers=fileHandler
qualname=sampleLogger
propagate=0
[handler_fileHandler]
class=FileHandler
level=DEBUG
formatter=complexFormatter
args=('myapp.log', 'a')
[handler_consoleHandler]
class=StreamHandler
level=DEBUG
formatter=simpleFormatter
args=(sys.stdout,)
[formatter_simpleFormatter]
format=%(asctime)s - %(name)s - %(levelname)s - %(message)s
datefmt=%Y-%m-%d %H:%M:%S
[formatter_complexFormatter]
format=%(asctime)s - %(name)s - %(levelname)s - %(module)s : %(lineno)d - %(message)s
datefmt=%Y-%m-%d %H:%M:%S
3. 配置文件详解
上述配置文件包含了4个部分:loggers、handlers、formatters和root。
3.1 loggers
loggers部分用来定义日志器(logger),也就是我们对应使用logging.getLogger()函数的参数。其中需要包含一个keys元素,指定loggers子部分的key列表。
3.2 handlers
handlers部分用来定义日志处理器(handler),也就是我们对应使用logging.addHandler()函数的参数。其中需要包含一个keys元素,指定handlers子部分的key列表。
3.3 formatters
formatters部分用来定义日志格式化器(formatter),也就是我们对应使用logging.Formatter()函数的参数。其中需要包含一个keys元素,指定formatters子部分的key列表。
3.4 root
root部分用来配置根记录器(root logger)的各种选项,根据需要包含level、handlers项。此外,我们也可以对特定的子记录器进行定制化配置。
4. 示例说明
下面给出两个示例来说明如何使用logging配置文件方式。
4.1 示例代码
import logging
import logging.config
logging.config.fileConfig("logging.conf")
logger = logging.getLogger("sampleLogger")
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()
函数读取logging配置文件logging.conf,并通过logging.getLogger()
函数获取名称为sampleLogger的日志器,在不同的日志级别下输出不同级别的日志信息。
4.2 示例配置文件
[loggers]
keys=root,sampleLogger
[handlers]
keys=fileHandler,consoleHandler
[formatters]
keys=simpleFormatter,complexFormatter
[logger_root]
level=DEBUG
handlers=fileHandler,consoleHandler
[logger_sampleLogger]
level=DEBUG
handlers=fileHandler
qualname=sampleLogger
propagate=0
[handler_fileHandler]
class=FileHandler
level=DEBUG
formatter=complexFormatter
args=('myapp.log', 'a')
[handler_consoleHandler]
class=StreamHandler
level=DEBUG
formatter=simpleFormatter
args=(sys.stdout,)
[formatter_simpleFormatter]
format=%(asctime)s - %(name)s - %(levelname)s - %(message)s
datefmt=%Y-%m-%d %H:%M:%S
[formatter_complexFormatter]
format=%(asctime)s - %(name)s - %(levelname)s - %(module)s : %(lineno)d - %(message)s
datefmt=%Y-%m-%d %H:%M:%S
上述配置文件分别定义了:
- 两个日志器,一个是根日志器,一个是名称为sampleLogger的子日志器
- 两个处理器,一个是将日志输出到文件中的FileHandler,一个是将日志输出到控制台的StreamHandler
- 两种格式化器,一种是简单格式化器,只包含日志级别和日志信息,一种是复杂格式化器,包含了模块名称和行号等更为详细的信息。
其中,名为sampleLogger的日志器的配置项如下:
- level:默认为NOTSET,最低为DEBUG,最高为CRITICAL
- handlers:默认为[]
- qualname:全称名称,即当我们使用logging.getLogger("sampleLogger.subLogger")时,注意到sampleLogger是存在的logger,subLogger是当前不存在的logger时其使用
- propagate:默认为1,即往上传递。如sampleLogger不是根Logger,那么会将sampleLogger日志内容传递给其父Logger,根Logger的结果就随你怎么设置了;如果设置为0,则表示不向上传递。
5. 结语
以上就是关于Python logging日志模块配置文件方式的详细介绍和示例演示,希望能对你的学习和工作有所帮助。如果您需要更加详细和专业的教程,请参考logging模块的官方文档。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python logging日志模块 配置文件方式 - Python技术站