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 psutil模块简单使用实例
Apr 28 Python
Python多进程并发(multiprocessing)用法实例详解
Jun 02 Python
python做量化投资系列之比特币初始配置
Jan 23 Python
用python实现将数组元素按从小到大的顺序排列方法
Jul 02 Python
python里运用私有属性和方法总结
Jul 08 Python
python代码编写计算器小程序
Mar 30 Python
django如何实现视图重定向
Jul 24 Python
python基于socket进行端口转发实现后门隐藏的示例
Jul 25 Python
python使用 request 发送表单数据操作示例
Sep 25 Python
python爬虫开发之Beautiful Soup模块从安装到详细使用方法与实例
Mar 09 Python
Python Tornado之跨域请求与Options请求方式
Mar 28 Python
如何在Anaconda中打开python自带idle
Sep 21 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 无限级分类学习参考之对ecshop无限级分类的解析 带详细注释
2010/03/23 PHP
CodeIgniter生成静态页的方法
2016/05/17 PHP
CI框架(CodeIgniter)公共模型类定义与用法示例
2017/08/10 PHP
CSS+Table图文混排中实现文本自适应图片宽度(超简单+跨所有浏览器)
2009/02/14 Javascript
js时间戳转为日期格式的方法
2015/12/28 Javascript
jquery实现ajax加载超时提示的方法
2016/07/23 Javascript
JS检测是否可以访问公网服务器功能代码
2017/06/19 Javascript
js导出Excel表格超出26位英文字符的解决方法ES6
2017/11/15 Javascript
vue基于mint-ui实现城市选择三级联动
2020/06/30 Javascript
新手快速上手webpack4打包工具的使用详解
2019/01/28 Javascript
Vue 子组件与数据传递问题及注意事项
2019/07/11 Javascript
jquery实现垂直手风琴菜单
2020/03/04 jQuery
javascript实现京东登录显示隐藏密码
2020/08/02 Javascript
openlayers4实现点动态扩散
2020/08/17 Javascript
vue实现折线图 可按时间查询
2020/08/21 Javascript
[05:05]第三天的dota2
2013/07/29 DOTA
Python定时执行之Timer用法示例
2015/05/27 Python
python并发编程之多进程、多线程、异步和协程详解
2016/10/28 Python
Pycharm设置界面全黑的方法
2018/05/23 Python
对python中array.sum(axis=?)的用法介绍
2018/06/28 Python
详解python3中的真值测试
2018/08/13 Python
python判断计算机是否有网络连接的实例
2018/12/15 Python
python解析yaml文件过程详解
2019/08/30 Python
Cpython解释器中的GIL全局解释器锁
2020/11/09 Python
用python对excel查重
2020/12/07 Python
HTML5+CSS3实例 :canvas 模拟实现电子彩票刮刮乐代码
2016/12/30 HTML / CSS
HTML5 Canvas 绘图——使用 Canvas 绘制图形图文教程 使用html5 canvas 绘制精美的图
2015/08/31 HTML / CSS
英国复古皮包品牌:Beara Beara
2018/07/18 全球购物
佳能法国商店:Canon法国
2019/02/14 全球购物
2019年.net常见面试问题
2012/02/12 面试题
劳动工资科岗位职责范本
2014/03/02 职场文书
工商企业管理应届生求职信
2014/05/04 职场文书
六查六看心得体会
2014/10/14 职场文书
工作检讨书500字
2014/10/19 职场文书
2015年人事专员工作总结
2015/04/29 职场文书
卫生保健工作总结2015
2015/05/18 职场文书