logging模块学习

简单实用:

# -*- coding:utf-8 -*-
import logging

logging.debug('debug message')
logging.info('info message')
logging.warn('warn message')
logging.error('error message')
logging.critical('critical message')

输出

WARNING:root:warn message
ERROR:root:error message
CRITICAL:root:critical message

由此可知,默认配置为:

默认等级:warning
默认格式:%(levelname)s -%(name)s - %(message)s'
默认名称:root


默认配置

日志等级

从上到下等级从低到高
-DEBUG:详细信息,典型地调试问题时会感兴趣
-INFO:证明事情按预期工作
-WARNING:明发生了一些意外,或者不久的将来会发生问题(如‘磁盘满了’)。软件还是在正常工作
-ERROR:由于更严重的问题,软件已不能执行一些功能了
-CRITICAL:严重错误,表明软件已不能继续运行了

几个重要的概念

-Logger 记录器,暴露了应用程序代码能直接使用的接口。
-Handler 处理器,将(记录器产生的)日志记录发送至合适的目的地。
-Filter 过滤器,提供了更好的粒度控制,它可以决定输出哪些日志记录。
-Formatter 格式化器,指明了最终输出中日志记录的布局。

原理

树形结构

树形结构

工作流程

工作流程

简单应用

# encoding: utf-8
#@author: chenjunhua
#time: 2019/1/10 11:52


import logging

#输出格式
formatter = logging.Formatter('%(filename)s-%(lineno)d-%(asctime)s-%(levelname)s - %(message)s')

#输出到文件
handler = logging.FileHandler("log.txt")
handler.setLevel(logging.CRITICAL)
handler.setFormatter(formatter)

#输出到屏幕
console = logging.StreamHandler()
console.setFormatter(formatter)
console.setLevel(logging.INFO)

logger = logging.getLogger(__name__)
logger.setLevel(level = logging.INFO)
logger.addHandler(handler)
logger.addHandler(console)



if __name__ == '__main__':
    logger.info("Start print log")
    logger.debug("Do something")
    logger.warning("Something maybe fail.")
    logger.info("Finish")

有用的format格式

格式 描述
%(levelno)s 打印日志级别的数值
%(levelname)s 打印日志级别名称
%(pathname)s 打印当前执行程序的路径
%(filename)s 打印当前执行程序名称
%(funcName)s 打印日志的当前函数
%(lineno)d 打印日志的当前行号
%(asctime)s 打印日志的时间
%(thread)d 打印线程id
%(threadName)s 打印线程名称
%(process)d 打印进程ID
%(message)s 打印日志信息

参考文章

python logging模块
python logging模块使用教程

你可能感兴趣的:(logging模块学习)