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实现socket客户端和服务端简单示例
Feb 24 Python
pyqt4教程之实现半透明的天气预报界面示例
Mar 02 Python
Python科学计算之NumPy入门教程
Jan 15 Python
python字符串过滤性能比较5种方法
Jun 22 Python
利用Python在一个文件的头部插入数据的实例
May 02 Python
Python如何发布程序的详细教程
Oct 09 Python
python爬取网易云音乐评论
Nov 16 Python
Python3爬虫教程之利用Python实现发送天气预报邮件
Dec 16 Python
Pyorch之numpy与torch之间相互转换方式
Dec 31 Python
如何解决tensorflow恢复模型的特定值时出错
Feb 06 Python
Numpy 多维数据数组的实现
Jun 18 Python
安装并免费使用Pycharm专业版(学生/教师)
Sep 24 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 使用post,get的一种简洁方式
2010/04/25 PHP
php连接数据库代码应用分析
2011/05/29 PHP
LotusPhp笔记之:基于ObjectUtil组件的使用分析
2013/05/06 PHP
PHP5多态性与动态绑定介绍
2015/04/03 PHP
Laravel与CI框架中截取字符串函数
2016/05/08 PHP
php 查找数组元素提高效率的方法详解
2017/05/05 PHP
Laravel5.1框架路由分组用法实例分析
2020/01/04 PHP
JavaScript调用客户端的可执行文件(示例代码)
2013/11/28 Javascript
JavaScript中操作字符串之localeCompare()方法的使用
2015/06/06 Javascript
Angular实现表单验证功能
2017/11/13 Javascript
js的各种数据类型判断的介绍
2019/01/19 Javascript
简单易扩展可控性强的Jquery转盘抽奖程序
2019/03/16 jQuery
vue多层嵌套路由实例分析
2019/03/19 Javascript
JS定义函数的几种常用方法小结
2019/05/23 Javascript
webpack打包html里面img后src为“[object Module]”问题
2019/12/22 Javascript
微信小程序实现多行文字滚动
2020/11/18 Javascript
[03:36]DOTA2完美大师赛coL战队趣味视频——我演你猜
2017/11/23 DOTA
Python scikit-learn 做线性回归的示例代码
2017/11/01 Python
目前不被任何主流浏览器支持的CSS3属性汇总
2014/07/21 HTML / CSS
纯CSS3单页切换导航菜单界面设计的简单实现
2016/08/16 HTML / CSS
HTML5之SVG 2D入门7—SVG元素的重用与引用
2013/01/30 HTML / CSS
HTML5的download属性详细介绍和使用实例
2014/04/23 HTML / CSS
C语言面试题
2015/10/30 面试题
财务部岗位职责
2013/11/19 职场文书
《盘古开天地》教学反思
2014/02/28 职场文书
《与朱元思书》的教学反思
2014/04/17 职场文书
给校长的建议书400字
2014/05/15 职场文书
学雷锋先进个人事迹
2014/05/26 职场文书
日语系毕业求职信
2014/07/27 职场文书
个人典型事迹材料
2014/12/30 职场文书
美丽心灵观后感
2015/06/01 职场文书
亮剑观后感500字
2015/06/05 职场文书
贫困生证明范文
2015/06/16 职场文书
小学毕业感言100字
2015/07/30 职场文书
纪律委员竞选稿
2015/11/19 职场文书
Java多线程并发FutureTask使用详解
2022/06/28 Java/Android