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动态参数用法实例分析
May 25 Python
Python3实现取图片中特定的像素替换指定的颜色示例
Jan 24 Python
python sort、sort_index方法代码实例
Mar 28 Python
详解利用OpenCV提取图像中的矩形区域(PPT屏幕等)
Jul 01 Python
python读取ini配置文件过程示范
Dec 23 Python
Django框架之中间件MiddleWare的实现
Dec 30 Python
Python各种扩展名区别点整理
Feb 27 Python
python sklearn包——混淆矩阵、分类报告等自动生成方式
Feb 28 Python
详解Python IO口多路复用
Jun 17 Python
Django创建一个后台的基本步骤记录
Oct 02 Python
Python调用REST API接口的几种方式汇总
Oct 19 Python
GitHub上值得推荐的8个python 项目
Oct 30 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动态地创建属性和方法, 对象的复制, 对象的比较,加载指定的文件,自动加载类文件,命名空间
2016/05/06 PHP
用JavaScript脚本实现Web页面信息交互
2006/12/21 Javascript
基于jQuery的表格操作插件
2010/04/22 Javascript
createTextRange()的使用示例含文本框选中部分文字内容
2014/02/24 Javascript
JS控制输入框内字符串长度
2014/05/21 Javascript
有效提高JavaScript执行效率的几点知识
2015/01/31 Javascript
jquery实现动态操作select选中
2015/02/11 Javascript
全面解析JavaScript中的valueOf与toString方法(推荐)
2016/06/14 Javascript
使用JS批量选中功能实现更改数据库中的status状态值(批量展示)
2016/11/22 Javascript
微信小程序 数组(增,删,改,查)等操作实例详解
2017/01/05 Javascript
js/jquery控制页面动态加载数据 滑动滚动条自动加载事件的方法
2017/02/08 Javascript
JavaScript数组迭代方法
2017/03/03 Javascript
使用vue-router beforEach实现判断用户登录跳转路由筛选功能
2018/06/25 Javascript
Vue-CLI3.x 设置反向代理的方法
2018/12/06 Javascript
基于JavaScript实现简单抽奖功能代码实例
2020/10/20 Javascript
python OpenCV学习笔记直方图反向投影的实现
2018/02/07 Python
浅析python3中的os.path.dirname(__file__)的使用
2018/08/30 Python
小白入门篇使用Python搭建点击率预估模型
2018/10/12 Python
深入理解Python异常处理的哲学
2019/02/01 Python
python实现全盘扫描搜索功能的方法
2019/02/14 Python
python爬虫开发之Request模块从安装到详细使用方法与实例全解
2020/03/09 Python
python要安装在哪个盘
2020/06/15 Python
django模型类中,null=True,blank=True用法说明
2020/07/09 Python
Python实现http接口自动化测试的示例代码
2020/10/09 Python
造价工程师个人求职信
2013/09/21 职场文书
文明礼仪小标兵事迹
2014/01/12 职场文书
《灯光》教学反思
2014/02/08 职场文书
《青山处处埋忠骨》教学反思
2014/04/22 职场文书
优秀教导主任事迹材料
2014/05/09 职场文书
养牛场项目建议书
2014/05/13 职场文书
餐饮周年庆活动方案
2014/08/14 职场文书
民族学专业大学生职业规划范文:清晰未来的构想
2014/09/20 职场文书
繁星春水读书笔记
2015/06/30 职场文书
教师正风肃纪心得体会
2016/01/15 职场文书
2016年小学感恩节活动总结
2016/04/01 职场文书
温馨祝福晨语:美丽的一天从我的问候开始
2019/11/28 职场文书