简介:

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

    前提  需要引入jquery  如果你用的单位不是px  修改的同时红色部分需保持一致 <!DOCTYPE html> <html> <head> <meta ...

  2. 小程序实现textarea行数自动增加

    查找网上案例很多,但是都不是很满意,参考大牛案例终结了一下,话不多说代码如下: 实现效果: 前段代码 <view class="text-box"> <view& ...

  3. 使用node.js安装asar和反编译app.asar

    背景:app.asar文件是Electron加密打包时的中间产物,electron.exe调用resources文件夹下的app.asar从而实现不用解压缩而直接读取文件内容的高效. 一.需要先安装n ...

  4. 创建maven项目时pom.xml报错的解决方法

    创建maven项目时pom.xml时: 出现如下报错信息: Failure to transfer commons-lang:commons-lang:jar:2.1 from https://rep ...

  5. eclipse导入maven工程,右键没有build path和工程不能自动编译解决方法

    原文链接:https://blog.csdn.net/wusunshine/article/details/52506389 eclipse导入maven工程,右键没有build path解决方法: ...

  6. python函数-函数进阶

    python函数-函数进阶 一.命名空间和作用域 1.命名空间 内置命名空间 —— python解释器 就是python解释器一启动就可以使用的名字存储在内置命名空间中 内置的名字在启动解释器的时候被 ...

  7. Sequence Models Week 3 Trigger word detection

    Trigger Word Detection Welcome to the final programming assignment of this specialization! In this w ...

  8. POJ 1149:PIGS 网络流经典题

    PIGS Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 18345   Accepted: 8354 Description ...

  9. bash cheat

    ############################################################################### BASH CHEATSHEET (中文速 ...

  10. Java 类提供了自定义的构造方法,那么类的默认构造不会被调用

    以下代码无法通过编译: public class Test1 { public static void main(String[] args) { //int a=6; Foo obj=new Foo ...