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对两个有序列表进行合并和排序的例子
Jun 13 Python
Python中使用装饰器来优化尾递归的示例
Jun 18 Python
python实现对excel进行数据剔除操作实例
Dec 07 Python
Flask实现跨域请求的处理方法
Sep 27 Python
Python提取转移文件夹内所有.jpg文件并查看每一帧的方法
Jun 27 Python
python实现可变变量名方法详解
Jul 01 Python
Python实现时间序列可视化的方法
Aug 06 Python
如何用Python来理一理红楼梦里的那些关系
Aug 14 Python
Python 可变类型和不可变类型及引用过程解析
Sep 27 Python
python定时任务 sched模块用法实例
Nov 04 Python
Python logging模块写入中文出现乱码
May 21 Python
利用Pycharm + Django搭建一个简单Python Web项目的步骤
Oct 22 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
「OVERLORD」动画重要删减!雅儿贝德的背叛?至尊猎杀队结成
2020/04/09 日漫
关于PHP结束标签的使用细节探讨及联想
2013/03/04 PHP
WAMP环境中扩展oracle函数库(oci)
2015/06/26 PHP
PHP带节点操作的无限分类实现方法详解
2016/11/09 PHP
TBCompressor js代码压缩
2011/01/05 Javascript
javascript获取下拉列表框当中的文本值示例代码
2013/07/31 Javascript
javascript的数组和常用函数详解
2014/05/09 Javascript
jQuery异步加载数据并添加事件示例
2014/08/24 Javascript
JavaScript创建一个object对象并操作对象属性的用法
2015/03/23 Javascript
javascript创建函数的20种方式汇总
2015/06/23 Javascript
Angular 4 指令快速入门教程
2017/06/07 Javascript
Vue filter介绍及详细使用
2018/04/04 Javascript
微信小程序实现折叠与展开文章功能
2018/06/12 Javascript
jquery获取select选中值的文本,并赋值给另一个输入框的方法
2018/08/21 jQuery
JS div匀速移动动画与变速移动动画代码实例
2019/03/26 Javascript
JavaScript中将值转换为字符串的五种方法总结
2019/06/06 Javascript
微信小程序实现导航栏和内容上下联动功能代码
2020/06/29 Javascript
[42:39]老党炸弹人试玩视频
2014/09/03 DOTA
[02:23]完美世界全国高校联赛街访DOTA2第一期
2019/11/28 DOTA
Python3通过Luhn算法快速验证信用卡卡号的方法
2015/05/14 Python
Anaconda2下实现Python2.7和Python3.5的共存方法
2018/06/11 Python
python cs架构实现简单文件传输
2020/03/20 Python
numpy数组广播的机制
2019/07/12 Python
18个Python脚本可加速你的编码速度(提示和技巧)
2019/10/17 Python
使用CSS3来制作消息提醒框
2015/07/12 HTML / CSS
体验完美剃须:The Art of Shaving
2018/08/06 全球购物
英国标准协会商店:BSI Shop
2019/02/25 全球购物
运动会四百米广播稿
2014/01/19 职场文书
村委会换届选举方案
2014/05/03 职场文书
责任胜于能力演讲稿
2014/05/20 职场文书
我爱幼儿园演讲稿
2014/09/11 职场文书
2015年政治教研组工作总结
2015/07/22 职场文书
2019下半年英语教师的教学工作计划(3篇)
2019/09/25 职场文书
Redisson实现Redis分布式锁的几种方式
2021/08/07 Redis
Pandas 数据编码的十种方法
2022/04/20 Python
Redis主从复制操作和配置详情
2022/09/23 Redis