简介:

日志是一种可以追踪某些软件运行时所发生事件的方法。软件开发人员可以向他们的代码中调用日志记录相关的方法来表明发生了某些事情。不同的事件,被区分在不同的等级中,故通过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。

利用四大组件,认识日志处理流程。

  1. 日志初始化
  2. 设置日志级别
  3. 定义handler:主要有StreamHandler和FileHandler。
  4. 控制格式化输出
  5. 启动日志文件
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模块的更多相关文章

  1. python logging模块可能会令人困惑的地方

    python logging模块主要是python提供的通用日志系统,使用的方法其实挺简单的,这块就不多介绍.下面主要会讲到在使用python logging模块的时候,涉及到多个python文件的调 ...

  2. python logging模块使用

    近来再弄一个小项目,已经到收尾阶段了.希望加入写log机制来增加程序出错后的判断分析.尝试使用了python logging模块. #-*- coding:utf-8 -*- import loggi ...

  3. 读懂掌握 Python logging 模块源码 (附带一些 example)

    搜了一下自己的 Blog 一直缺乏一篇 Python logging 模块的深度使用的文章.其实这个模块非常常用,也有非常多的滥用.所以看看源码来详细记录一篇属于 logging 模块的文章. 整个 ...

  4. (转)python logging模块

    python logging模块 原文:http://www.cnblogs.com/dahu-daqing/p/7040764.html 1 logging模块简介 logging模块是Python ...

  5. Python logging 模块学习

    logging example Level When it's used Numeric value DEBUG Detailed information, typically of interest ...

  6. python logging—模块

    python logging模块 python logging提供了标准的日志接口,python logging日志分为5个等级: debug(), info(), warning(), error( ...

  7. Python logging模块无法正常输出日志

    废话少说,先上代码 File:logger.conf [formatters] keys=default [formatter_default] format=%(asctime)s - %(name ...

  8. 0x03 Python logging模块之Formatter格式

    目录 logging模块之Formatter格式 Formater对象 日志输出格式化字符串 LogRecoder对象 时间格式化字符串 logging模块之Formatter格式 在记录日志是,日志 ...

  9. 0x01 Python logging模块

    目录 Python logging 模块 前言 logging模块提供的特性 logging模块的设计过程 logger的继承 logger在逻辑上的继承结构 logging.basicConfig( ...

  10. Python Logging模块的简单使用

    前言 日志是非常重要的,最近有接触到这个,所以系统的看一下Python这个模块的用法.本文即为Logging模块的用法简介,主要参考文章为Python官方文档,链接见参考列表. 另外,Python的H ...

随机推荐

  1. zTree的学习

    最近要做一个有关权限的东西,原理和数据库都已经知道了,就是树状图困难. 原先是打算用layui的,因为我孤陋寡闻……吃了大亏,弄了3个小时,屁都没有.只能说是…… 后来百度找到了zTree,进去学习了 ...

  2. js实现鼠标单击或者双击事件

    // timer为全局变量 getClickEmail1(_type) { clearTimeout(this.timer); if (_type == 1) { if (event.detail = ...

  3. IntelliJ IDEA ULTIMATE 2019.3 破解注册详细教程【亲测有效,持续更新~】

    ​ 申明:本教程 IntelliJ IDEA 破解补丁.激活码均收集于网络,请勿商用,仅供个人学习使用,如有侵权,请联系作者删除. 注意 本教程适用于 IntelliJ IDEA 所有版本,请放心食用 ...

  4. Mobile-H5网页快速滚动和回弹

    现在很多for Mobile的HTML5网页内都有快速滚动和回弹的效果,看上去和原生app的效率都有得一拼. 要实现这个效果很简单,只需要加一行css代码即可: -webkit-overflow-sc ...

  5. PAT Advanced 1151 LCA in a Binary Tree (30) [树的遍历,LCA算法]

    题目 The lowest common ancestor (LCA) of two nodes U and V in a tree is the deepest node that has both ...

  6. 使用js检测页面是在electron app中运行还是在浏览器中运行

    <script type="text/javascript"> var userAgent = navigator.userAgent.toLowerCase() ){ ...

  7. 从内存上限说起 VMware内存分配初探

    原文链接:http://blog.51cto.com/cxpbt/463777 [IT168 应用技巧]为方便识别虚拟的资源和物理(或叫真实的)资源,本人文章中以小写字母v前缀标识虚拟资源,小写字母p ...

  8. POJ 1995:Raising Modulo Numbers 快速幂

    Raising Modulo Numbers Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 5532   Accepted: ...

  9. CocoaPods为多个target添加依赖库/Podfile的配置

    Podfile的相关配置,请看官方文档http://guides.cocoapods.org/syntax/podfile.html 1)多个target公用相同库,还可以添加额外的不同第三方库 编辑 ...

  10. [软件] Omnigraffle

    一个商业软件, mac下画画图, 还挺好用的. 网上可以找到可用的注册码 https://blog.csdn.net/glw0223/article/details/90736751