Python logging日志模块 配置文件方式

下面是关于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技术站

(0)
上一篇 2023年6月25日
下一篇 2023年6月25日

相关文章

  • 图说超线程技术(Hyper-Threading Technology)

    下面是关于图说超线程技术的完整攻略,包括超线程技术的原理、优势和两个示例说明。 超线程技术的原理 超线程技术是一种通过在单个物理处理器上模拟多个逻辑处理器来提高处理器性能的技术。它通过在处理器内部创建多个逻辑处理器,使得处理器可以同时执行多个线程,从而提高处理器的利用率和性能。 超线程技术的实现依赖于处理器的硬件支持,包括多个物理处理器核心、多个逻辑处理器、…

    other 2023年5月6日
    00
  • python打开浏览器的方法python打开默认浏览器

    Python打开浏览器的方法:Python打开默认浏览器 Python提供了多种方法来打开浏览器,其中最简单的方法是使用webbrowser模块。web模块提供了一个open()函数,可以在默认浏览器中打开指定的URL。本文将介绍如何使用webbrowser模块打开默认浏览器,并提供两个示例说明。 步骤1:导入webbrowser模块 首先,我们需要导入we…

    other 2023年5月8日
    00
  • ES6字符串的扩展实例

    ES6字符串的扩展是 ECMAScript 2015 标准(以下简称ES6)中增加的一系列字符串相关的功能。这些新特性包括模板字符串、多行字符串、字符串的扩展方法等。本文将给出一份扩展实例攻略,来帮助你更好地了解 ES6 字符串的使用方法。 模板字符串 模板字符串是ES6中一种新的字符串类型,用一对反引号(`)括起来,并且可以在其中嵌入表达式或变量。 下面是…

    other 2023年6月20日
    00
  • iOS 控件封装(又名拧螺丝)之排序按钮的开发

    针对iOS控件封装之排序按钮的开发,我们可以分为以下四个步骤: 1.需求分析 首先,我们需要明确排序按钮的具体需求: 排序按钮需要展示一个排序标识,并且支持升序和降序两种排序方式。 当用户点击排序按钮时,需要切换排序方式,并且重新加载数据。 排序按钮的样式需要和当前主题相符合。 2.设计方案 根据需求,我们需要设计一套组件使用方便且易于扩展的控件方案: 我们…

    other 2023年6月26日
    00
  • 详解MyBatis中column属性的总结

    详解MyBatis中column属性的总结 在MyBatis中,我们可以通过column属性来对数据库表中的字段名进行映射,使得程序开发变得更加方便自由。本篇文章将对column属性进行全面详解。 column属性的定义和作用 column属性可以用来指定数据库表中的列名与Java对象中的属性名之间的映射关系。当查询数据库表中的数据时,MyBatis会自动将…

    other 2023年6月25日
    00
  • PHP常用字符串函数小结(推荐)

    PHP常用字符串函数小结(推荐) 1. strlen() 函数 功能:返回字符串的长度 示例: $str = \"Hello World!\"; $length = strlen($str); echo \"字符串的长度为:\" . $length; 2. strpos() 函数 功能:查找字符串中第一次出现的位置 示…

    other 2023年8月18日
    00
  • Python3与fastdfs分布式文件系统如何实现交互

    Python3可以通过使用fdfs-client-py库来与FastDFS分布式文件系统进行交互。下面是该过程的完整攻略: 安装fdfs-client-py库 使用pip可以方便的安装fdfs-client-py库,命令如下: pip install fdfs-client-py 配置FastDFS客户端 在Python代码中,我们将使用FastDFS提供的…

    other 2023年6月27日
    00
  • MySQL中如何正确存储IP地址

    MySQL中如何正确存储IP地址的攻略 在MySQL中,可以使用合适的数据类型和函数来正确存储和处理IP地址。下面是一个完整的攻略,包含了两个示例说明。 1. 使用合适的数据类型 MySQL提供了INET_ATON和INET_NTOA函数,用于将IP地址转换为整数和将整数转换为IP地址。为了正确存储IP地址,我们可以使用INT UNSIGNED数据类型来存储…

    other 2023年7月31日
    00
合作推广
合作推广
分享本页
返回顶部