简介:

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

    题目描述:AK吧!少年 AK is an ACM competition finished all of the problems. AC This problem is one of the ste ...

  2. Spring入门之一-------实现一个简单的IoC

    一.场景模拟 public interface Human { public void goHome(); } Human:人类,下班了该回家啦 public interface Car { void ...

  3. C++ 内存映射

    HANDLE hFile = NULL;HANDLE hFileMap = NULL;const viewmapsize = 8 * 1024 * 1024;//8mDWORD highsize,lo ...

  4. MyBatis的初始化过程。

    对于任何框架而言,在使用前都要进行一系列的初始化,MyBatis也不例外.本章将通过以下几点详细介绍MyBatis的初始化过程. 1.MyBatis的初始化做了什么 2. MyBatis基于XML配置 ...

  5. zabbix_server

    http://www.linuxidc.com/Linux/2014-11/109909.htm [root@localhost zabbix]# service iptables stop  关闭i ...

  6. springmvc的InternalResourceViewResolver自我理解

    原文链接:https://blog.csdn.net/wwzuizz/article/details/78268007 它的作用是在Controller返回的时候进行解析视图 @RequestMapp ...

  7. HDU _2546 01背包问题

    A - 饭卡 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit Statu ...

  8. 关于torch.norm函数的笔记

    先看一下它的参数: norm(p='fro', dim=None, keepdim=False, dtype=None) p: the order of norm. 一般来说指定 $p = 1, 2$ ...

  9. linux下启动mysql提示:Timeout error occurred trying to start MySQL Daemon

    启动 mysqld 时经过很长时间显示 Timeout error occurred trying to start MySQL Daemon. 终端进入 mysql 时显示 ERROR 2002 ( ...

  10. pipeline简单规则

    Declarative 1. pipeline{ agent options{ } stages{ stage(' '){ steps{ } } } post{ always{} changed{} ...