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爬虫之使用urllib2组件抓取网页内容
Nov 04 Python
python多进程共享变量
Apr 06 Python
Python文件操作基本流程代码实例
Dec 11 Python
python中使用xlrd读excel使用xlwt写excel的实例代码
Jan 31 Python
为什么入门大数据选择Python而不是Java?
Mar 07 Python
python 将数据保存为excel的xls格式(实例讲解)
May 03 Python
Python中类的创建和实例化操作示例
Feb 27 Python
Django+Xadmin构建项目的方法步骤
Mar 06 Python
使用Python实现图像标记点的坐标输出功能
Aug 14 Python
Python图像处理库PIL的ImageDraw模块介绍详解
Feb 26 Python
python输入中文的实例方法
Sep 14 Python
用python-webdriver实现自动填表的示例代码
Jan 13 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
IP攻击升级,程序改进以对付新的攻击
2010/11/23 PHP
PHP的5个安全措施小结
2012/07/17 PHP
php ios推送(代码)
2013/07/01 PHP
php引用传值实例详解学习
2013/11/06 PHP
PHP实现的同步推荐操作API接口案例分析
2016/11/30 PHP
php正则表达式使用方法整理集合
2020/01/31 PHP
收藏一些不常用,但是有用的代码
2007/03/12 Javascript
扩展JavaScript功能的正确方法(译文)
2012/04/12 Javascript
千分位数字格式化(用逗号隔开 代码已做了修改 支持0-9位逗号隔开)的JS代码
2013/12/05 Javascript
jquery动态添加option示例
2013/12/30 Javascript
jquery实现的鼠标拖动排序Li或Table
2014/05/04 Javascript
JavaScript验证18位身份证号码最后一位正确性的实现代码
2014/08/07 Javascript
jQuery大于号(>)选择器的作用解释
2015/01/13 Javascript
JS+CSS实现仿触屏手机拨号盘界面及功能模拟完整实例
2015/05/16 Javascript
jQuery实现的仿select功能代码
2015/08/19 Javascript
GitHub上一些实用的JavaScript的文件压缩解压缩库推荐
2016/03/13 Javascript
深入理解JavaScript中的浮点数
2016/05/18 Javascript
jQuery 选择同时包含两个class的元素的实现方法
2016/06/01 Javascript
正则中的回溯定义与用法分析【JS与java实现】
2016/12/27 Javascript
javascript 中模板方法单例的实现方法
2017/10/17 Javascript
微信小程序项目实践之验证码倒计时功能
2018/07/18 Javascript
详解js删除数组中的指定元素
2018/10/31 Javascript
vue计算属性computed、事件、监听器watch的使用讲解
2019/01/21 Javascript
ES2020 新特性(种草)
2020/01/12 Javascript
vuex中store存储store.commit和store.dispatch的用法
2020/07/24 Javascript
Django中传递参数到URLconf的视图函数中的方法
2015/07/18 Python
Python数据结构之哈夫曼树定义与使用方法示例
2018/04/22 Python
python中协程实现TCP连接的实例分析
2018/10/14 Python
Python requests设置代理的方法步骤
2020/02/23 Python
python/golang 删除链表中的元素
2020/09/14 Python
美国波西米亚风格精品店:South Moon Under
2019/10/26 全球购物
大学应届毕业生个人求职信
2013/09/23 职场文书
好书伴我成长演讲稿
2014/05/14 职场文书
毕业班工作总结
2015/08/10 职场文书
人事部:年度述职报告范文
2019/07/12 职场文书
SQL Server 数据库实验课第五周——常用查询条件
2021/04/05 SQL Server