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实现rsa算法代码
Feb 17 Python
numpy中实现二维数组按照某列、某行排序的方法
Apr 04 Python
Python实现迭代时使用索引的方法示例
Jun 05 Python
pandas dataframe添加表格框线输出的方法
Feb 08 Python
Python求一批字符串的最长公共前缀算法示例
Mar 02 Python
python中列表的含义及用法
May 26 Python
python opencv把一张图片嵌入(叠加)到另一张图片上的实现代码
Jun 11 Python
matplotlib.pyplot.plot()参数使用详解
Jul 28 Python
python3将变量输入的简单实例
Aug 19 Python
python 基于wx实现音乐播放
Nov 24 Python
在前女友婚礼上,用Python破解了现场的WIFI还把名称改成了
May 28 Python
Elasticsearch 数据类型及管理
Apr 19 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-redis中文文档介绍
2013/02/07 PHP
使用PHPExcel操作Excel用法实例分析
2015/03/26 PHP
利用PHP抓取百度阅读的方法示例
2016/12/18 PHP
TP5框架实现签到功能的方法分析
2020/04/05 PHP
用js实现计算代码行数的简单方法附代码
2007/08/13 Javascript
Ext grid 添加右击菜单
2009/11/26 Javascript
jquery.cookie.js使用指南
2015/01/05 Javascript
在web中js实现类似excel的表格控件
2016/09/01 Javascript
火狐和ie下获取javascript 获取event的方法(推荐)
2016/11/26 Javascript
JS获取年月日时分秒的方法分析
2016/11/28 Javascript
JS实现颜色动态淡化效果
2017/03/06 Javascript
node.js到底要不要加分号浅析
2018/07/11 Javascript
web页面和微信小程序页面实现瀑布流效果
2018/09/26 Javascript
React 源码中的依赖注入方法
2018/11/07 Javascript
使用js获取身份证年龄的示例代码
2020/12/11 Javascript
[45:38]DOTA2上海特级锦标赛主赛事日 - 1 胜者组第一轮#1Liquid VS Alliance第一局
2016/03/02 DOTA
[02:23]2018DOTA2亚洲邀请赛趣味视频——反应测试
2018/04/04 DOTA
简单讲解Python编程中namedtuple类的用法
2016/06/21 Python
搭建Python的Django框架环境并建立和运行第一个App的教程
2016/07/02 Python
浅析Python的web.py框架中url的设定方法
2016/07/11 Python
Python简单计算文件MD5值的方法示例
2018/04/11 Python
pandas通过索引进行排序的示例
2018/11/16 Python
为什么从Python 3.6开始字典有序并效率更高
2019/07/15 Python
详解Django中views数据查询使用locals()函数进行优化
2020/08/24 Python
django有哪些好处和优点
2020/09/01 Python
Python装饰器如何实现修复过程解析
2020/09/05 Python
python 如何引入协程和原理分析
2020/11/30 Python
CSS3实现复选框动画特效示例代码
2016/09/27 HTML / CSS
Linux的文件类型
2016/07/05 面试题
煤矿机修工岗位职责
2014/02/07 职场文书
双方协议书
2014/04/22 职场文书
国庆节演讲稿范文2014
2014/09/19 职场文书
学校党的群众路线教育实践活动总结材料
2014/10/30 职场文书
2014年幼儿园小班工作总结
2014/12/04 职场文书
2015年物业管理员工工作总结
2015/10/15 职场文书
2016党校学习心得体会范文
2016/01/07 职场文书