• Python:Logging日志处理


    程序中,需要添加日志来记录大量信息。

    import logging
    
    # 第一步:创建logger
    self.logger = logging.getLogger()
    self.logger.setLevel(logging.NOTSET)  # 设置logger级别
    
    # 第二步:创建一个handler,用于写入日志文件
    log_file_path = Log.get_log_file_path(self)  # 获取日志文件路径
    self.fileHandler = logging.FileHandler(log_file_path)  # 用于写入日志文件
    
    # 第三步:定义输出格式
    formatter = logging.Formatter('>>> %(asctime)s - %(filename)s [line:%(lineno)d] - %(levelname)s: %(message)s')
    
    # 第四步:定义handler的输出格式formatter
    self.fileHandler.setFormatter(formatter)
    
    # 第五步:给logger添加handler
    self.logger.addHandler(self.fileHandler)
    
    # 过滤日志
    self.logger.addFilter(self.fileHandler)

    默认配置

    默认情况下,logging模块将日志打印到了标准输出中,并且只输出WARNING及以上级别的日志。

    # 级别排序:CRITICAL > ERROR > WARNING > INFO > DEBUG
    
    logging.debug('DEBUG : 打印全部的日志,详细的信息,通常只出现在诊断问题上')
    logging.info('INFO : 打印info,warning,error,critical级别的日志,确认一切按预期运行')
    logging.warning('WARNING : 打印warning,error,critical级别的日志,一个迹象表明,一些意想不到的事情发生了,或表明一些问题在不久的将来(例如。磁盘空间低”),这个软件还能按预期工作')
    logging.error('ERROR : 打印error,critical级别的日志,更严重的问题,软件没能执行一些功能')
    logging.critical('CRITICAL : 打印critical级别,一个严重的错误,这表明程序本身可能无法继续运行')

    配置日志级别,格式,输出位置等

    通过logging.basicConfig()函数,可改变logging模块默认配置,参数如下:

    logging.basicConfig(level=logging.NOTSET,  # 设置rootlogger的日志级别
                        filename='error.log',  # 指定文件名创建FiledHandler,将日志存储在指定的文件中
                        filemode='a',  # 模式,有w和a,w就是写模式,每次都会重新写日志,覆盖之前的日志  #a是追加模式,默认如果不写的话,就是追加模式
                        format=">>> %(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s",  # 日志输出模式
                        datefmt="%a, %d %b %Y %H:%M:%S"  # 设置日期格式
                        )

    format参数中可能用到的格式化串:
    %(name)s             Logger的名字
    %(levelno)s          数字形式的日志级别
    %(levelname)s     文本形式的日志级别
    %(pathname)s     调用日志输出函数的模块的完整路径名,可能没有
    %(filename)s        调用日志输出函数的模块的文件名
    %(module)s          调用日志输出函数的模块名
    %(funcName)s     调用日志输出函数的函数名
    %(lineno)d           调用日志输出函数的语句所在的代码行
    %(created)f          当前时间,用UNIX标准的表示时间的浮 点数表示
    %(relativeCreated)d    输出日志信息时的,自Logger创建以 来的毫秒数
    %(asctime)s                字符串形式的当前时间。默认格式是 “2003-07-08 16:49:45,896”。逗号后面的是毫秒
    %(thread)d                 线程ID。可能没有
    %(threadName)s        线程名。可能没有
    %(process)d              进程ID。可能没有
    %(message)s            用户输出的消息

    类 Logger, Handler, Formatter, Filter的概念

    logging库提供了多个组件:Logger、Handler、Filter、Formatter

    Logger:  对象提供应用程序可直接使用的接口

    Handler:  发送日志到适当的目的地

    Filter:   提供了过滤日志信息的方法

    Formatter: 指定日志显示格式  

    多模块使用logging

    。。。

  • 相关阅读:
    微服务架构技术栈选型手册(万字长文)
    Visual Studio 2013 always switches source control plugin to Git and disconnect TFS
    Visual Studio 2013 always switches source control plugin to Git and disconnect TFS
    MFC对话框中使用CHtmlEditCtrl
    ATL开发 ActiveX控件的 inf文件模板
    ActiveX: 如何用.inf和.ocx文件生成cab文件
    Xslt 1.0中使用Array
    如何分隔两个base64字符串?
    An attempt was made to load a program with an incorrect format
    JQuery 公网 CDN
  • 原文地址:https://www.cnblogs.com/rechin/p/9530699.html
Copyright © 2020-2023  润新知