Python日志模块logging简介


Posted in Python onApril 13, 2015

logging分为4个模块: loggers, handlers, filters, and formatters.

●loggers: 提供应用程序调用的接口
●handlers: 把日志发送到指定的位置
●filters: 过滤日志信息
●formatters: 格式化输出日志

Logger

Logger.setLevel() 设置日志级别
Logger.addHandler()和Logger.removeHandler() 增加和删除日志处理器
Logger.addFilter()和Logger.removeFilter() 增加和删除过滤器
Logger.debug(), Logger.info(), Logger.warning(), Logger.error(), and Logger.critical() 创建不同的级别的日志
getLogger() 获取日志的根实例

Handler

setLevel() 设置日志级别
setFormatter() 设置输出格式
addFilter() and removeFilter() 增加和删除过滤器

Formatter

默认形式为: %Y-%m-%d %H:%M:%S.
格式为: %()s

日志配置管理

硬编码形式

import logging
# create logger

logger = logging.getLogger('simple_example')

logger.setLevel(logging.DEBUG)
# create console handler and set level to debug

ch = logging.StreamHandler()

ch.setLevel(logging.DEBUG)
# create formatter

formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
# add formatter to ch

ch.setFormatter(formatter)
# add ch to logger

logger.addHandler(ch)
# 'application' code

logger.debug('debug message')

logger.info('info message')

logger.warn('warn message')

logger.error('error message')

logger.critical('critical message')

输出
$ python simple_logging_module.py

2005-03-19 15:10:26,618 - simple_example - DEBUG - debug message

2005-03-19 15:10:26,620 - simple_example - INFO - info message

2005-03-19 15:10:26,695 - simple_example - WARNING - warn message

2005-03-19 15:10:26,697 - simple_example - ERROR - error message

2005-03-19 15:10:26,773 - simple_example - CRITICAL - critical message

通过文件配置管理日志

代码:

import logging

import logging.config
logging.config.fileConfig('logging.conf')
# create logger

logger = logging.getLogger('simpleExample')
# 'application' code

logger.debug('debug message')

logger.info('info message')

logger.warn('warn message')

logger.error('error message')

logger.critical('critical message')

配置文件:
[loggers]

keys=root,simpleExample
[handlers]

keys=consoleHandler
[formatters]

keys=simpleFormatter
[logger_root]

level=DEBUG

handlers=consoleHandler
[logger_simpleExample]

level=DEBUG

handlers=consoleHandler

qualname=simpleExample

propagate=0
[handler_consoleHandler]

class=StreamHandler

level=DEBUG

formatter=simpleFormatter

args=(sys.stdout,)
[formatter_simpleFormatter]

format=%(asctime)s - %(name)s - %(levelname)s - %(message)s

datefmt=

输出:
$ python simple_logging_config.py

2005-03-19 15:38:55,977 - simpleExample - DEBUG - debug message

2005-03-19 15:38:55,979 - simpleExample - INFO - info message

2005-03-19 15:38:56,054 - simpleExample - WARNING - warn message

2005-03-19 15:38:56,055 - simpleExample - ERROR - error message

2005-03-19 15:38:56,130 - simpleExample - CRITICAL - critical message

日志格式

%(levelno)s: 打印日志级别的数值
%(levelname)s: 打印日志级别名称
%(pathname)s: 打印当前执行程序的路径,其实就是sys.argv[0]
%(filename)s: 打印当前执行程序名
%(funcName)s: 打印日志的当前函数
%(lineno)d: 打印日志的当前行号
%(asctime)s: 打印日志的时间
%(thread)d: 打印线程ID
%(threadName)s: 打印线程名称
%(process)d: 打印进程ID
%(message)s: 打印日志信息

流程图

Python日志模块logging简介

Python 相关文章推荐
Python编写Windows Service服务程序
Jan 04 Python
Python读取Excel表格,并同时画折线图和柱状图的方法
Oct 14 Python
python使用pdfminer解析pdf文件的方法示例
Dec 20 Python
python实现Flappy Bird源码
Dec 24 Python
Python 处理图片像素点的实例
Jan 08 Python
python 求1-100之间的奇数或者偶数之和的实例
Jun 11 Python
十行代码使用Python写一个USB病毒
Jun 21 Python
Python依赖包整体迁移方法详解
Aug 15 Python
Python面向对象中类(class)的简单理解与用法分析
Feb 21 Python
python中shell执行知识点
May 06 Python
python如何利用paramiko执行服务器命令
Nov 07 Python
python热力图实现简单方法
Jan 29 Python
Python命令行参数解析模块optparse使用实例
Apr 13 #Python
初步介绍Python中的pydoc模块和distutils模块
Apr 13 #Python
Python随机生成数模块random使用实例
Apr 13 #Python
Python字典操作简明总结
Apr 13 #Python
Python单元测试框架unittest使用方法讲解
Apr 13 #Python
Python配置文件解析模块ConfigParser使用实例
Apr 13 #Python
深入Python函数编程的一些特性
Apr 13 #Python
You might like
PHP 飞信好友免费短信API接口开源版
2010/07/22 PHP
PHP性能优化准备篇图解PEAR安装
2011/12/05 PHP
PHP 自定义错误处理函数的使用详解
2013/05/10 PHP
PHP使用memcache缓存技术提高响应速度的方法
2014/12/26 PHP
php生成无限栏目树
2017/03/16 PHP
php+Ajax处理xml与json格式数据的方法示例
2019/03/04 PHP
javaScript parseInt字符转化为数字函数使用小结
2009/11/05 Javascript
jQuery的deferred对象使用详解
2011/08/20 Javascript
Javascript保存网页为图片借助于html2canvas库实现
2014/09/05 Javascript
JS获取IMG图片高宽的简单实例
2016/05/17 Javascript
MvcPager分页控件 适用于Bootstrap
2017/06/03 Javascript
详解VueRouter进阶之导航钩子和路由元信息
2017/09/13 Javascript
angular.js和vue.js中实现函数去抖示例(debounce)
2018/01/18 Javascript
postman自定义函数实现 时间函数的思路详解
2019/04/17 Javascript
解决cordova+vue 项目打包成APK应用遇到的问题
2019/05/10 Javascript
Vue 列表上下过渡效果的实例代码
2019/06/25 Javascript
JS如何在数组指定位置插入元素
2020/03/10 Javascript
原生js实现购物车功能
2020/09/23 Javascript
如何使用原生Js实现随机点名详解
2021/01/06 Javascript
Python读写Redis数据库操作示例
2014/03/18 Python
python输出当前目录下index.html文件路径的方法
2015/04/28 Python
关于Python中浮点数精度处理的技巧总结
2017/08/10 Python
Python 解决中文写入Excel时抛异常的问题
2018/05/03 Python
详解python配置虚拟环境
2019/04/08 Python
python将字符串list写入excel和txt的实例
2019/07/20 Python
Python将视频或者动态图gif逐帧保存为图片的方法
2019/09/10 Python
tensorflow实现训练变量checkpoint的保存与读取
2020/02/10 Python
Python实现AI换脸功能
2020/04/10 Python
HTML5移动端开发中的Viewport标签及相关CSS用法解析
2016/04/15 HTML / CSS
自荐书4要点
2014/01/25 职场文书
产品开发计划书
2014/04/27 职场文书
小学校本培训方案
2014/06/06 职场文书
2014购房个人委托书范本
2014/10/12 职场文书
起诉离婚协议书样本
2014/11/25 职场文书
2015年社区党建工作汇报材料
2015/06/25 职场文书
中学图书馆工作总结
2015/08/11 职场文书