`

python的logging模块配置文件的格式

 
阅读更多
python的logging模块配置文件的格式
2008/01/08 16:48
====================================
python的logging模块配置文件的格式
====================================

:原文url: http://docs.python.org/lib/logging-config-fileformat.html
:译者: dujunfly@gmail.com
:日期:    2008-01-08


配置文件的格式是由fileConfig()函数负责解析的,这个函数基于ConfigParser.该文件中必须包含一下几段: ``[loggers]`` , ``[handlers]`` 和 ``[formatters]`` ,用来标识文件定义的几种类型的实体.对每个这样的实体,都有一个特定的段来标识这个实体是如何配置的.比如说, ``[loggers]`` 段里面定义了一个叫log01的logger,那么关于这个logger的详细配置信息应该写在 ``[logger_loger01]`` 里面.同样的,如果 ``[handlers]`` 里面定义了一个名为hand01的handler ,那么它的详细配置信息应该放在 ``[handler_hand01]`` 里面,而 ``[formatters]`` 里面定义的form01就应该用一个名为 ``[formatter_form01]`` 的段来定义它的详细信息.对root logger来说,他的定义信息则必须放在名为 ``[logger_root]`` 的端中.

下面是一个关于配置文件中这几个段的一个示例::

    [loggers]
    keys=root,log02,log03,log04,log05,log06,log07

    [handlers]
    keys=hand01,hand02,hand03,hand04,hand05,hand06,hand07,hand08,hand09
   
    [formatters]
    keys=form01,form02,form03,form04,form05,form06,form07,form08,form09

root logger必须包含一个标识logging等级的level和一个包含handlers的列表.下面给出一个root logger的示例 ::
   
    [logger_root]
    level=NOTSET
    handlers=hand01

level可以是 ``DEBUG``, ``INFO``, ``WARNING``, ``ERROR``, ``CRITICAL`` 或 ``NOTSET`` 中的一个. ``NOTSET`` 标识用在root logger时,也只有用在root logger时,表示所有的信息都会被记录.Level变量会在logging包命名空间的上下文中被赋值.

handlers项可以接受一个由逗号分隔的handler名字列表,这些个handler的名字必须出现在 ``[handlers]`` 段中,而且配置文件中还需要有相关的详细描述这些handler的字段.

对于除root logger外的loggers 来说,有一些额外的信息需要提供.下面是一个这方面的例子::
   
    [logger_parser]
    level=DEBUG
    handlers=hand01
    propagate=1
    qualname=compiler.parser

level和handlers项跟root logger的完全一样,如果一个非root logger的level项定义为 ``NOTSET`` ,系统会根据该logger的继承关系向上寻找一个有效的level值来作为该logger的level值. ``propagete`` 项如果为1,则表示该logger必须处理它继承的父类logger的log信息;如果为0则不必. ``qualname`` 项表示logger的分层结构的通道名,应用程序中就是用这个名字来获得这个logger的.

下面是一个定义handler的示例::
   
    [handler_hand01]
    class=StreamHandler
    level=NOTSET
    formatter=form01
    args=(sys.stdout,)

``class`` 项定义了handlers的类(通过eval()函数在logging包的命名空间中实例化).level项被用做logger的logging等级信息, ``NOTSET`` 表示记录所有的log信息.

``formatter`` 项定义用于该handler的formatter,如果为空则用默认的formatter(logging._defaultFormatter).如果不为空,那么相应的formatter名字也应该出现在 ``[formatters]`` 段中,并且应该有相应的定义段.

``args`` 项中定义的是用于handler类实例化时传给构造函数的参数.查阅相应的handler的构造函数,或者参考以下示例来看一下典型的配置项::
   
    [handler_hand02]
    class=FileHandler
    level=DEBUG
    formatter=form02
    args=('python.log', 'w')
   
    [handler_hand03]
    class=handlers.SocketHandler
    level=INFO
    formatter=form03
    args=('localhost', handlers.DEFAULT_TCP_LOGGING_PORT)
   
    [handler_hand04]
    class=handlers.DatagramHandler
    level=WARN
    formatter=form04
   
    [handler_hand05]
    class=handlers.SysLogHandler
    level=ERROR
    formatter=form05
    args=(('localhost', handlers.SYSLOG_UDP_PORT), handlers.SysLogHandler.LOG_USER)
   
    [handler_hand06]
    class=handlers.NTEventLogHandler
    level=CRITICAL
    formatter=form06
    args=('Python Application', '', 'Application')
   
    [handler_hand07]
    class=handlers.SMTPHandler
    level=WARN
    formatter=form07
    args=('localhost', 'from@abc', ['user1@abc', 'user2@xyz'], 'Logger Subject')
   
    [handler_hand08]
    class=handlers.MemoryHandler
    level=NOTSET
    formatter=form08
    target=
    args=(10, ERROR)
   
    [handler_hand09]
    class=handlers.HTTPHandler
    level=NOTSET
    formatter=form09
    args=('localhost:9022', '/log', 'GET')

``formatter`` 项用到的formatter定义如下::
   
    [formatter_form01]
    format=F1 %(asctime)s %(levelname)s %(message)s
    datefmt=
    class=logging.Formatter

``format`` 项定义了整个的格式字符串, ``datefmt`` 项可以接受跟strftime()函数兼容的时间/日期格式字符串.如果为空,则默认用ISO8601格式的日期/时间格式,ISO8601格式也定义了微秒,可以用一个逗号隔开添加到上面的格式字符串之后,ISO8601格式的一个示例是 2003-01-23 00:29:50,411.

``class`` 项是可选的,它指出了 ``formatter`` 的类名(模块名和类名通过点来分隔),这个选项在需要一个Formatter子类时很有用,Formatter的子类可以通过一种可伸缩的格式来展现更多的异常信息.

baidu空间不支持直接复制,所以直接贴上来rst文件,自己通过rst2html来转换成html格式看吧.
分享到:
评论

相关推荐

    python的logging模块

    ### Python的logging模块详解 #### 一、简介与应用场景 在进行Python开发时,日志模块是必不可少的一部分,尤其对于大型或复杂的项目来说更是如此。Python内置的`logging`模块提供了一种简单且灵活的方式来记录...

    浅谈python日志的配置文件路径问题

    如下所示: import logging import logging.config logging.config.fileConfig(path) logger = logging.getLogger('') ...以上这篇浅谈python日志的配置文件路径问题就是小编分享给大家的全部内容了,希望能

    详解Python中logging日志模块在多进程环境下的使用

    以下是一个配置示例,展示了如何设置`logging`模块: ```python import logging.config logging.config.dictConfig({ 'version': 1, 'disable_existing_loggers': True, 'formatters': { 'verbose': { '...

    python的logging模块.pdf

    总之,`logging`模块是Python中强大的日志记录工具,它通过设置日志级别、自定义日志格式和输出位置等功能,为开发者提供了灵活的日志记录手段,对程序的运行调试、性能分析和故障定位都起着至关重要的作用。...

    python logging通过json文件配置的步骤

    总结,Python的logging模块通过JSON配置文件提供了一种灵活的方式来管理日志,包括自定义日志级别、处理器、格式和目标。此外,通过生成JSON格式的日志,我们可以优化与logstash等日志收集系统的集成,提高日志处理...

    Python logging模块handlers用法详解

    Python的logging模块是用于处理程序运行过程中的日志记录,它提供了一种灵活且强大的方式来跟踪应用程序的行为。本文将深入探讨logging模块中的handlers,这是日志处理的核心组件,它们负责将日志信息发送到不同的...

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

    总结,Python的logging模块通过配置文件提供了灵活的日志管理能力,允许开发者根据需求定制日志的输出、级别和格式,从而更好地监控和调试应用程序。正确配置和使用logging模块,能显著提高开发和运维的效率。

    Python使用logging模块实现打印log到指定文件的方法

    在Python中,logging模块是一个强大的日志记录工具,它允许用户将程序运行期间产生的日志信息...此外,在实际的生产环境中,还可以通过配置文件或者外部工具来动态调整日志的级别和格式,使得日志系统更加灵活和强大。

    Python logging模块原理解析及应用

    Python的logging模块是用于生成日志的工具,它在软件开发中扮演着至关重要的角色,尤其是在调试和维护阶段。本文将深入解析logging模块的工作原理,并介绍如何在实际应用中使用它。 首先,我们要了解logging模块的...

    Python logging模块写入中文出现乱码

    Python的`logging`模块是内置的日志记录工具,它提供了灵活、方便的接口来记录不同级别的日志信息,如DEBUG、INFO、WARNING、ERROR、CRITICAL等。然而,在处理中文字符时,如果不正确配置,可能会导致乱码问题。在...

    python logging模块书写日志以及日志分割详解

    Python 的 `logging` 模块提供了强大的日志处理功能,它允许开发者自定义日志格式、日志级别以及输出目标等。本文将详细介绍如何使用 Python 的 `logging` 模块来记录不同级别的日志,并通过示例演示如何实现日志...

    Python logging模块进行封装实现原理解析

    ### Python logging模块封装实现原理详解 #### 一、引言 在软件开发过程中,日志记录是一项非常重要的功能。它不仅能够帮助开发者更好地理解和调试代码,还能为运维人员提供系统运行状态的重要信息。Python自带的...

    解决Python logging模块无法正常输出日志的问题

    在Python编程中,logging模块是用于生成日志的标准库,它提供了灵活的日志记录功能,包括不同级别的日志(如DEBUG、INFO、WARNING、ERROR、CRITICAL)以及日志输出到控制台、文件或其他处理器的能力。然而,有时我们...

    logging python

    Python的logging模块是用于日志记录的标准库,它提供了丰富的功能来满足不同级别的日志需求,从简单的调试信息到复杂的日志记录策略。在Python程序中使用logging模块可以帮助开发者跟踪程序运行状态,诊断错误,以及...

    说一说Python logging

    #### 三、Logging模块的基本用法 下面是一个简单的示例,展示如何使用`logging`模块: ```python import logging # 配置日志输出格式和级别 logging.basicConfig(format='%(levelname)s:%(message)s', level=...

    Python-lvsoftenhancedlogging一个增强版的python日志模块

    `Python-lvsoft-enhancedlogging`是一个针对Python原生`logging`模块的增强版本,旨在提供更丰富的功能和更友好的使用体验。这个库由lvsoft开发,旨在满足复杂日志需求,提升开发效率。 `enhanced_logging`模块在...

    Python之日志处理(logging模块).docx

    【Python之日志处理(logging模块)】 日志处理在软件开发中扮演着至关重要的角色,它能够帮助开发者和运维人员了解系统运行状态,定位和解决问题。Python的logging模块提供了全面的日志记录功能,便于对应用程序...

    Python模块学习logging.docx

    logging模块还支持更复杂的配置,比如添加多个Handler来同时输出到不同位置,或者使用Filter来过滤特定的日志,甚至可以自定义Formatter以满足特殊的需求。例如,可以创建一个FileHandler来将日志写入文件,同时保留...

    Python库 | python-logging-loki-0.2.0.tar.gz

    首先,让我们深入了解Python的logging模块。它是Python标准库的一部分,提供了丰富的日志记录功能,允许开发者在代码中插入日志语句,以便在运行时或之后收集和分析应用程序的行为。logging模块提供了不同级别的日志...

Global site tag (gtag.js) - Google Analytics