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重试装饰器示例
Feb 11 Python
python实现将html表格转换成CSV文件的方法
Jun 28 Python
python中解析json格式文件的方法示例
May 03 Python
python爬虫入门教程--快速理解HTTP协议(一)
May 25 Python
Python实现简单的语音识别系统
Dec 13 Python
python使用Apriori算法进行关联性解析
Dec 21 Python
对pycharm 修改程序运行所需内存详解
Dec 03 Python
python 自动重连wifi windows的方法
Dec 18 Python
对Python的多进程锁的使用方法详解
Feb 18 Python
手把手教你将Flask应用封装成Docker服务的实现
Aug 19 Python
Python面向对象多态实现原理及代码实例
Sep 16 Python
Python操作word文档插入图片和表格的实例演示
Oct 25 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
第一个无线电台是由谁发明的
2021/03/01 无线电
文件上传程序的全部源码
2006/10/09 PHP
php 多个submit提交表单 处理方法
2009/07/07 PHP
PHP自动识别字符集并完成转码详解
2013/08/02 PHP
比较全的JS checkbox全选、取消全选、删除功能代码
2008/12/19 Javascript
动态样式类封装JS代码
2009/09/02 Javascript
用js做一个小游戏平台 (一)
2009/12/29 Javascript
Extjs实现进度条的两种便捷方式
2013/09/26 Javascript
javascript实现全角半角检测的方法
2015/07/23 Javascript
javascript实现状态栏中文字动态显示的方法
2015/10/20 Javascript
字符串反转_JavaScript
2016/04/28 Javascript
node网页分段渲染详解
2016/09/05 Javascript
表单元素值获取方式js及java方式的简单实例
2016/10/15 Javascript
如何实现星星评价(jquery.raty.js插件)
2016/12/21 Javascript
微信小程序环境下将文件上传到OSS的方法步骤
2019/05/31 Javascript
vue filter 完美时间日期格式的代码
2019/08/14 Javascript
vue 解决文本框被键盘遮住的问题
2019/11/06 Javascript
简介JavaScript错误处理机制
2020/08/04 Javascript
如何手写一个简易的 Vuex
2020/10/10 Javascript
python操作CouchDB的方法
2014/10/08 Python
简单分析Python中用fork()函数生成的子进程
2015/05/04 Python
Python如何import文件夹下的文件(实现方法)
2017/01/24 Python
urllib和BeautifulSoup爬取维基百科的词条简单实例
2018/01/17 Python
NumPy 如何生成多维数组的方法
2018/02/05 Python
对python mayavi三维绘图的实现详解
2019/01/08 Python
Python Web静态服务器非堵塞模式实现方法示例
2019/11/21 Python
linux mint中搜狗输入法导致pycharm卡死的问题
2020/10/28 Python
Python 删除List元素的三种方法remove、pop、del
2020/11/16 Python
美国在线工具商店:Acme Tools
2018/06/26 全球购物
美国Curacao百货连锁店网站:iCuracao.com
2019/07/20 全球购物
.NET remoting中对象激活的两种方式
2015/06/08 面试题
乡党政领导班子群众路线教育实践活动个人对照检查材料
2014/09/20 职场文书
学年个人总结范文
2015/03/05 职场文书
严以用权专题学习研讨会发言材料
2015/11/09 职场文书
python实现Thrift服务端的方法
2021/04/20 Python
记一次Mysql不走日期字段索引的原因小结
2021/10/24 MySQL