写一下python的logging模块

logging模块构成

  • Logger:暴露了应用程序代码能直接使用的接口
  • Handler:将Logger产生的日志记录发送至指定位置
  • Filter:输出粒度控制,决定输出哪些日志记录
  • Formatter:对输出进行格式化调整

日志级别

    NOTSET < DEBUG < INFO < WARNING < ERROR < CRITICAL

日志输出

输出到终端

导入logging模块会默认生成一个root logger, 它的默认级别为WARNING,低于该级别的logging函数不会在终端输出日志信息。

查看当前的level:

import logging

root_logger = logging.getLogger()
default_level = root_logger.level
level_name = logging.getLevelName(default_level) 

变更当前的level:

root_logger.setLevel(logging.DEBUG)
输出到文件
logging.basicConfig(filename='debug.log', level=logging.DEBUG)
定制输出格式

在调用basicConfig之前,logger的handle对象是空的,此时执行

logging.getLogger().handlers

得到的结果为:

[]

调用之后则会默认初始化一个handler对象:

[<logging.FileHandler object at 0x00000000025D8E80>]

获取当前的handle对象:

cur_handler = logging.getLogger().handlers[0]

声明一个formatter对象,并将该对象赋给handler:

LOGGING_FORMAT = '%(asctime)s - %(name)s - %(levelname)s - %(message)s'
formatter = logging.Formatter(LOGGING_FORMAT)
logging.getLogger().handlers[0].setFormatter(formatter)

输出是:

logging.warning('test')
2018-04-17 11:41:10,446 - root - WARNING - test
emmmm,这个模块暂时只用到这么多,以后有更多需求的话再来填坑。




阅读更多
文章标签: python logging log
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭