python——logging模块
简介:
日志是一种可以追踪某些软件运行时所发生事件的方法。软件开发人员可以向他们的代码中调用日志记录相关的方法来表明发生了某些事情。不同的事件,被区分在不同的等级中,故通过log分析,可以很轻易地分析得到该应用的健康状况,及时发现问题并快速定位、解决问题,补救损失。python自带的模块logging可以实现日志的记录功能,其下的日志级别共分为五个级别,级别顺序为debug<info<warning<error<critical。logging模块指定日志记录器的日志级别,只有级别大于或等于该指定日志级别的日志记录才会被输出,小于该等级的日志记录将会被丢弃。
日志的模块使用
- 定义模块级别函数:用于指定触发这个级别所报出的信息,通用方法是logging.log(level,*args,**kwargs),参数level是日志的等级。
- 对日志进行基本配置:logging.basicConfig(**kwargs),可选参数如下:
- 日志的四大组件:loggers、handlers、filters、formatters。四大组件的应用在下面会介绍。
logging模块提供的模块级别的那些函数实际上也是通过这几个组件的相关实现类来记录日志的,只是在创建这些类的实例时设置了一些默认值。
- 格式字符化输出:formatters控制日志信息输出格式,在这个模块内已经封装好了自己的格式,如下图所示:
代码实例
经过简单配置,输出日志记录。
import logging
logging.basicConfig(level= logging.DEBUG,filename='basic.log',format= '时间:%(asctime)s,''日志级别:%(levelname)s,''日志信息:%(message)s,''日志名字:%(name)s')
logging.debug("This is a debug log.")
logging.info("This is a info log.")
logging.warning("This is a warning log.")
logging.error("This is a error log.")
logging.critical("This is a critical log.")
时间:2018-10-11 16:46:45,355,日志级别:DEBUG,日志信息:This is a debug log.,日志名字:root
时间:2018-10-11 16:46:45,355,日志级别:INFO,日志信息:This is a info log.,日志名字:root
时间:2018-10-11 16:46:45,355,日志级别:WARNING,日志信息:This is a warning log.,日志名字:root
时间:2018-10-11 16:46:45,356,日志级别:ERROR,日志信息:This is a error log.,日志名字:root
时间:2018-10-11 16:46:45,356,日志级别:CRITICAL,日志信息:This is a critical log.,日志名字:root
可以发现默认情况下,日志名字为root。
利用四大组件,认识日志处理流程。
- 日志初始化
- 设置日志级别
- 定义handler:主要有StreamHandler和FileHandler。
- 控制格式化输出
- 启动日志文件
import logging
logger = logging.getLogger("test")#初始化
#设置级别
logger.setLevel(logging.DEBUG)
#定义handler
#控制台输出
sh = logging.StreamHandler()
sh.setLevel(logging.ERROR)
#文件输出
fh = logging.FileHandler('test.log')
fh.setLevel(logging.DEBUG)
#格式化输出
format = logging.Formatter(
'时间:%(asctime)s,'
'日志级别:%(levelname)s,'#逗号写在里面
'日志信息:%(message)s,'
'日志名字:%(name)s'
)
#将格式化传到控制台和文件
sh.setFormatter(format)
fh.setFormatter(format)
#启动日志文件
logger.addHandler(sh)
logger.addHandler(fh)
if __name__ == '__main__':
def f(a):#日志记录函数
try:
res = 5.0/a
logger.info("正常运行")
except Exception as e:
logger.error(e)
f(0)
时间:2018-10-11 16:55:57,156,日志级别:ERROR,日志信息:float division by zero,日志名字:test
简单点说就是:日志器(logger)是入口,真正干活儿的是处理器(handler),处理器(handler)还可以通过过滤器(filter)和格式器(formatter)对要输出的日志内容做过滤和格式化等处理操作。
python——logging模块的更多相关文章
- python logging模块可能会令人困惑的地方
python logging模块主要是python提供的通用日志系统,使用的方法其实挺简单的,这块就不多介绍.下面主要会讲到在使用python logging模块的时候,涉及到多个python文件的调 ...
- python logging模块使用
近来再弄一个小项目,已经到收尾阶段了.希望加入写log机制来增加程序出错后的判断分析.尝试使用了python logging模块. #-*- coding:utf-8 -*- import loggi ...
- 读懂掌握 Python logging 模块源码 (附带一些 example)
搜了一下自己的 Blog 一直缺乏一篇 Python logging 模块的深度使用的文章.其实这个模块非常常用,也有非常多的滥用.所以看看源码来详细记录一篇属于 logging 模块的文章. 整个 ...
- (转)python logging模块
python logging模块 原文:http://www.cnblogs.com/dahu-daqing/p/7040764.html 1 logging模块简介 logging模块是Python ...
- Python logging 模块学习
logging example Level When it's used Numeric value DEBUG Detailed information, typically of interest ...
- python logging—模块
python logging模块 python logging提供了标准的日志接口,python logging日志分为5个等级: debug(), info(), warning(), error( ...
- Python logging模块无法正常输出日志
废话少说,先上代码 File:logger.conf [formatters] keys=default [formatter_default] format=%(asctime)s - %(name ...
- 0x03 Python logging模块之Formatter格式
目录 logging模块之Formatter格式 Formater对象 日志输出格式化字符串 LogRecoder对象 时间格式化字符串 logging模块之Formatter格式 在记录日志是,日志 ...
- 0x01 Python logging模块
目录 Python logging 模块 前言 logging模块提供的特性 logging模块的设计过程 logger的继承 logger在逻辑上的继承结构 logging.basicConfig( ...
- Python Logging模块的简单使用
前言 日志是非常重要的,最近有接触到这个,所以系统的看一下Python这个模块的用法.本文即为Logging模块的用法简介,主要参考文章为Python官方文档,链接见参考列表. 另外,Python的H ...
随机推荐
- 第一部分 JavaScript语言核心(四)
第九章 类和模块 P235 组合VS子类:组合优于继承 P236 类的层次结构和抽象类 第十章 正则达式的模式匹配 定义 JS中正则表达式用RegExp对象表示.直接量定义为包含在一堆斜杠(/)之间的 ...
- UVA - 12113 Overlapping Squares(重叠的正方形)
题意:给定一个4*4的棋盘和棋盘上所呈现出来的纸张边缘,问用不超过6张2*2的纸能否摆出指定的形状. 分析:2*2的纸在4*4的棋盘上总共有9种放置位置,枚举所有的放置位置即可.枚举情况总共种. #p ...
- C++ 设置自动启动
WCHAR pFileName[MAX_PATH] = {}; //得到程序自身的全路径 DWORD dwRet = GetModuleFileName(NULL, pFileName, MAX_PA ...
- Distributed--2PC和3PC
参考 https://blog.csdn.net/lnho2015/article/details/78685503 https://www.cnblogs.com/hubaoxi/p/6867203 ...
- volatile作用与处理器嗅探的简解
先贴一下 volatile 的作用定义 如果一个字段被声明成volatile,Java线程内存模型确保所有线程看到这个变量的值是一致的 首先问题就来了,一个共享变量再被volatile修饰过后,怎么被 ...
- 解决TeamViewer提示商业用途
安装此插件 提取码:i8o3
- PAT Advanced 1034 Head of a Gang (30) [图的遍历,BFS,DFS,并查集]
题目 One way that the police finds the head of a gang is to check people's phone calls. If there is a ...
- [BJDCTF2020]Mark loves cat
0x00 知识点 GitHack读取源码 $$会导致变量覆盖漏洞 0x01解题 dirsearch扫描一下,发现/.git目录,用githack获取一下源码. <?php include 'fl ...
- 2020/2/6 PHP编程学习
今天把后台数据库处理好了,用了框架后真就是搬砖的一天..晚上继续刷题,明天把数据库处理完,这样一个商城框架就有了:
- 读取word模板,填充数据后导出
一.需求说明 定期生成word报告,报告中含有文本.表格.图表等元素,依次获取进行替换,保留原有样式,生成新的word文档 二.引入依赖 <dependency> <groupId& ...