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日

相关文章

  • 清洁jenkins工作区

    Jenkins是一个流行的持续集成和持续交付工具,它可以帮助我们自动化构建、测试和部署软件。在使用Jenkins时,我们需要定期清理工作区,以避免占用过多的磁盘空间和混淆旧的构结果。本攻略将介绍如何清洁Jenkins工作区,并提供两个示例。 步骤一:使用Jenkins插件清洁作区 Jenkins提供了许多插件,可以帮助我们清洁工作区。以下是一个示例,展示了如…

    other 2023年5月9日
    00
  • 轻松装win10:vmwareworkstation12虚拟机下载

    轻松装win10:vmwareworkstation12虚拟机下载 如果你想试用最新的Windows 10操作系统,但又不想在你的电脑上直接安装它,那么使用虚拟机是一个不错的选择,它可以让你在安全的环境下尝试新的操作系统。VMware Workstation 12就是这样一个强大的虚拟机软件,它可以帮助你轻松地在你的计算机上运行多个虚拟操作系统,包括Wind…

    其他 2023年3月28日
    00
  • linux下进入root用户登录

    Linux下进入root用户登录 在Linux下,root用户是系统管理员,拥有最高权限。在进行一些敏感操作时,我们需要登录到root账户进行操作。 以下是进入root用户登录的步骤: 步骤一:使用普通用户登录系统 首先,我们需要使用一个普通用户登录到系统。通过这个用户,我们可以执行一些和普通用户相关的操作。 步骤二:切换到root用户 在登录到普通用户后,…

    其他 2023年3月28日
    00
  • java字符串查找的三种方式

    Java字符串查找的三种方式 在Java中,字符串查找是一项常见的任务。本文将介绍Java字符串查找的三种方式,包括以下内容: 使用String类的indexOf()方法 使用String类的contains()方法 使用正则表达式 1. 使用String类的indexOf()方法 String类的indexOf()方法可以用于查找一个字符串是否包含另一个字…

    other 2023年5月8日
    00
  • Win10更新四月正式版17134.166累积更新补丁 附更新内容和下载地址

    Win10更新四月正式版17134.166累积更新补丁攻略 本攻略将详细讲解Win10更新四月正式版17134.166累积更新补丁的安装过程,并提供更新内容和下载地址。请按照以下步骤进行操作: 步骤一:检查系统版本 首先,确保你的系统版本是Win10更新四月正式版17134.166。你可以通过以下步骤检查: 打开“设置”应用程序。 点击“系统”。 在左侧导航…

    other 2023年8月4日
    00
  • 详解Vue中过度动画效果应用

    详解Vue中过渡动画效果应用 介绍 Vue提供了使用过渡动画效果的能力,通过在组件的状态变化过程中添加 CSS 过渡/动画类名来实现。本文将详细讲解Vue中过渡动画效果的应用方法。 步骤 步骤一:定义过渡效果类名 首先,我们需要在CSS中定义过渡效果的类名。我们可以使用Vue提供的四个类名来控制不同的过渡阶段,分别是:- v-enter:进入之前的样式,在元…

    other 2023年6月28日
    00
  • 剖析Linux系统中的文件系统路径

    关于“剖析Linux系统中的文件系统路径”的攻略,我将从以下几个方面展开: 了解Linux文件系统的基本结构 查看当前目录和完整路径 掌握基本的文件系统路径操作命令 通过示例说明不同文件系统路径的使用 具体来说,我们需要做如下操作: 1. 了解Linux文件系统的基本结构 文件系统是 Linux 操作系统的重要组成部分,负责管理系统中的文件。在 Linux …

    other 2023年6月27日
    00
  • TypeScript中的函数和类你了解吗

    当谈及JavaScript的类型系统时,TypeScript就成为了开发者的一个选择。TypeScript是一种编程语言,可以编译成JavaScript,它包括JavaScript的所有特性,同时带来了很多其他优势,例如静态类型检测、类型推断、接口、类、命名空间、泛型等等。在这篇文章中,我们将重点讨论TypeScript中的函数和类。 函数 函数式编程 Ja…

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