Python日志模块介绍

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python日志模块介绍相关的知识,希望对你有一定的参考价值。

参考技术A

logging 模块预定义了5种日志级别,并根据它们所跟踪的事件的级别或严重程度来命名,具体如下:

注意:

Logger 对象有三个功能:

Logger 对象的使用最广泛的方法主要是:配置和记录消息

当配置了 Logger 对象后,就可以使用 Logger.debug() , Logger.info() , Logger.warning , Logger.error , Logger.critical() 方法来创建日志消息,只需将需要记录的消息写进括号内即可

Handler 对象负责将日志消息(基于日志消息的严重性)分派给处理器的指定目标。在上一步中提到,可以使用 Logger.addHandler() 来添加零个或多个处理器对象。例如,算法可以将所有日志消息都发送到控制台,将 ERROR 或者更高级别的消息发送到磁盘文件。这就需要两个单独的处理器。

处理器有很多 种类 ,常用的主要有以下几种:

Formatter 对象是用来配置日志消息的最终输出形式。其格式由 %(<dictionary key>)s 这样的表达形式来组合成字符串。例如:

其中,可以设置的<dictionary key>可参考 LogRecord属性

配置完后,我们就可以在我们算法想要进行日志记录的地方调用 Logger.debug() , Logger.info() , Logger.warning , Logger.error , Logger.critical() 来进行日志输出了。比如:

当运行算法时,你会看到控制台输出以下内容

https://docs.python.org/3/howto/logging.html#logging-howto

python 日志模块使用

Table of Contents

1 logging介绍

1.1 logger

  • 提供日志接口,供应用代码使用。logger最常用的操作有两类:配置和发送日志消息。通过logging.getLogger(name)来获得对象

1.2 handler

  • 将日志记录以一定的格式发送到合适的目的地。一个logger对象可以通过addHandler可以添加多个handler,还可以设置不同的日志级别

1.3 filter

  • 提供一种优雅的方式决定一个日志记录是否发送到handler

1.4 formatter

  • 提供日志记录具体的输出格式

2 logging 配置

2.1 通过python代码配置

#!/usr/bin/python
# -*- coding:utf-8 -*-
""" logger 日志 """

import logging
import logging.handlers

handler = logging.handlers.RotatingFileHandler("mylog.log");
formater = logging.Formatter("%(asctime)s -  %(name)s - %(filename)s:%(lineno)d - %(message)s")
handler.setFormatter(formater)

logger = logging.getLogger('main')
logger.addHandler(handler)
logger.setLevel(logging.DEBUG)

logger.debug("the logger out")

2.2 通过配置文件配置

  • 编写logging.conf
    [loggers]
    keys=root,main
    
    [handlers]
    keys=consoleHandler,fileHandler
    
    [formatters]
    keys=mainFormatter
    
    [logger_root]
    level=DEBUG
    handlers=consoleHandler
    
    [logger_main]
    level=DEBUG
    handlers=fileHandler
    qualname=main
    
    [handler_consoleHandler]
    class=StreamHandler
    level=DEBUG
    formatter=mainFormatter
    args=(sys.stdout,)
    
    
    [handler_fileHandler]
    class=logging.handlers.RotatingFileHandler
    level=DEBUG
    formatter=mainFormatter
    args=("mylog.log",)
    
    [formatter_mainFormatter]
    format="%(asctime)s -  %(name)s - %(filename)s:%(lineno)d - %(message)s"
    datefmt=
    
  • 编写python程序导入配置
    #!/usr/bin/python
    # -*- coding:utf-8 -*-
    """ logging config 方式"""
    
    import logging
    import logging.config
    
    logging.config.fileConfig("logging.conf")
    root_logger = logging.getLogger('root')
    logger = logging.getLogger('main')
    
    
    root_logger.debug("root logging")
    logger.debug("main logging")
    

详情参考http://python.usyiyi.cn/python_278/library/logging.html

以上是关于Python日志模块介绍的主要内容,如果未能解决你的问题,请参考以下文章

[Python] iupdatable包:日志模块使用介绍

Python入门之logging日志模块以及多进程日志

python基础学习日志day5

python之写日志模块

python之写日志模块

Python日志输出——logging模块