Python:Logging日志处理

2021-07-17 04:05

阅读:599

标签:记录   war   日期   排序   当前时间   标准输出   表示   att   字符   

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

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

。。。

 

Python:Logging日志处理

标签:记录   war   日期   排序   当前时间   标准输出   表示   att   字符   

原文地址:https://www.cnblogs.com/rechin/p/9530699.html


评论


亲,登录后才可以留言!