欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

logging模块详解

程序员文章站 2023-12-31 23:07:04
logging模块简单使用 1 import logging 2 3 # 记录debug级别的日志; 4 logging.debug("this is a debug info") 5 6 # 记录info级别的日志; 7 logging.info("this is a info") 8 9 # 记 ......

logging模块简单使用

logging模块详解
 1 import logging
 2 
 3  # 记录debug级别的日志;
 4 logging.debug("this is a debug info")
 5 
 6 # 记录info级别的日志;
 7 logging.info("this is a info")
 8 
 9 # 记录警告级别的日志;
10 logging.warn("this is a warn")
11 WARNING:root:this is a warn
12 
13 # 记录错误级别的日志;
14 logging.error("this is a error info")
15 ERROR:root:this is a error info
16 
17 # 记录严重错误级别的日志;
18 logging.critical("this is a critical info")
19 CRITICAL:root:this is a critical info
View Code

 

  

总结:默认情况下,logging模块将日志打印到屏幕上(stdout),日志级别为WARNING(即只有日志级别高于WARNING的日志信息才会输出),日志格式为:日志级别 : 日志实例的名称 : 日志信息;

  • 日志级别
日志级别           含义
          DEBUG     调试信息,只有用户在调试代码时才会用;
    INFO     确保代码按照预期正常运行;
    WARNING     表明不久的将来会发生问题,软件还是在正常工作;
    ERROR     由于更严重的问题,软件已不能执行一些功能了;
    CRITICAL     严重错误,表明软件已不能继续运行了;

 

 

 

 

其他重要的概念

Logger 记录器

  • Logger 记录器暴露了应用程序代码能直接使用的接口。 

  • Logger是一个树形层级结构,在使用接口debug,info,warn,error,critical之前必须创建Logger实例,即创建一个记录器. 

  • 如果没有显式的进行创建,则默认创建一个root logger,并应用默认的日志级别(WARN),处理器Handler(StreamHandler,即将日志信息打印输出在标准输出上),和格式化器Formatter(默认的格式即为第一个简单使用程序中输出的格式)。

 

 

 

 

 

 

 

创建方法:

logging模块详解
1 logger = logging.getLogger("logger_name")
View Code

 

增加处理器Handler:

# 设置日志级别为ERROR,即只有级别>=ERROR的日志才会输出;
logger.setLevel(logging.ERROR) 

# 为logger实例增加一个处理器;
logger.addHandler(handler_name)

# 为logger实例删除一个处理器 
logger.removeHandler(handler_name) 

  

Handler 处理器

将(记录器产生的)日志记录发送至合适的目的地。

Filter 过滤器

提供了更好的粒度控制,它可以决定输出哪些日志记录。

 

Formatter 格式化器

指明了最终输出中日志记录的布局。

 
 

除了加时间,还可以自定义一大堆格式,下表就是所有支持的格式

%(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 用户输出的消息

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

日志同时输出到屏幕和文件

如果想同时把log打印在屏幕和文件日志里,就需要了解一点复杂的知识 了

Python 使用logging模块记录日志涉及四个主要类,使用官方文档中的概括最为合适:

  • logger提供了应用程序可以直接使用的接口;
  • handler将(logger创建的)日志记录发送到合适的目的输出;
  • filter提供了细度设备来决定输出哪条日志记录;
  • formatter决定日志记录的最终输出格式。
 

他们之间的关系是这样的

 logging模块详解

 

上一篇:

下一篇: