zoukankan      html  css  js  c++  java
  • 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

    。。。

  • 相关阅读:
    TensorFlow实现LeNet5模型
    jmeter+influxdb+grafana性能测试可视化报告
    jmeter命令执行脚本
    jmeter JSON Extractor使用
    jmeter上传文件
    jenkins登录信息无效,忘记密码
    XML
    JMeter函数和变量
    jmeter配置CSV Data Set Config
    jmeter发送Query String Parameters格式参数报错
  • 原文地址:https://www.cnblogs.com/rechin/p/9530699.html
Copyright © 2011-2022 走看看