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中执行shell命令的几个方法小结
Sep 18 Python
将Emacs打造成强大的Python代码编辑工具
Nov 20 Python
在Python程序和Flask框架中使用SQLAlchemy的教程
Jun 06 Python
Python切换pip安装源的方法详解
Nov 18 Python
详解Python 数据库 (sqlite3)应用
Dec 07 Python
python使用response.read()接收json数据的实例
Dec 19 Python
Python面向对象程序设计多继承和多态用法示例
Apr 08 Python
Python函数的默认参数设计示例详解
Dec 01 Python
python实现字符串和数字拼接
Mar 02 Python
python实现QQ邮箱发送邮件
Mar 06 Python
pytorch快速搭建神经网络_Sequential操作
Jun 17 Python
python使用建议与技巧分享(一)
Aug 17 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邮件发送类PHPMailer用法实例详解
2014/09/22 PHP
使用ThinkPHP的自动完成实现无限级分类实例详解
2016/09/02 PHP
几款极品的javascript压缩混淆工具
2007/05/16 Javascript
Autocomplete Textbox Example javascript实现自动完成成功
2007/08/17 Javascript
Javascript Global对象
2009/08/13 Javascript
jQuery EasyUI 的EasyLoader功能介绍
2010/09/12 Javascript
javascript for循环从入门到偏门(效率优化+奇特用法)
2012/08/01 Javascript
JS防止用户多次提交的简单代码
2013/08/01 Javascript
Javascript仿PHP $_GET获取URL中的参数
2014/05/12 Javascript
使用AOP改善javascript代码
2015/05/01 Javascript
javascript中一些util方法汇总
2015/06/10 Javascript
Bootstrap组件之下拉菜单,多级菜单及按钮布局方法实例
2017/05/25 Javascript
一看就会的vuex实现登录验证(附案例)
2020/01/09 Javascript
vue 单页应用和多页应用的优劣
2020/10/22 Javascript
Python中的引用知识点总结
2019/05/20 Python
python中多个装饰器的调用顺序详解
2019/07/16 Python
对Django外键关系的描述
2019/07/26 Python
python内置模块collections知识点总结
2019/12/19 Python
python批量修改xml属性的实现方式
2020/03/05 Python
Python多线程的退出控制实现
2020/08/10 Python
Python 解析xml文件的示例
2020/09/29 Python
详解CSS3的box-shadow属性制作边框阴影效果的方法
2016/05/10 HTML / CSS
HTML5 canvas基本绘图之图形组合
2016/06/27 HTML / CSS
世界上最大的隐形眼镜商店:1-800 Contacts
2018/11/03 全球购物
加拿大国民体育购物网站:National Sports
2018/11/04 全球购物
Fox Racing官方网站:越野摩托车和山地自行车装备和服装
2019/12/23 全球购物
妇产科护士自我鉴定
2013/10/15 职场文书
《厄运打不垮的信念》教学反思
2014/04/13 职场文书
会计学专业自荐信
2014/06/25 职场文书
中文专业自荐书
2014/06/29 职场文书
奖学金感谢信
2015/01/21 职场文书
意向协议书
2015/01/27 职场文书
城管个人总结
2015/02/28 职场文书
2015新生加入学生会自荐书
2015/03/24 职场文书
机关保密工作承诺书
2015/05/04 职场文书
Java Spring Boot请求方式与请求映射过程分析
2022/06/25 Java/Android