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标准库之多进程(multiprocessing包)介绍
Nov 25 Python
用Python实现命令行闹钟脚本实例
Sep 05 Python
Python用Pillow(PIL)进行简单的图像操作方法
Jul 07 Python
Python定时器实例代码
Nov 01 Python
Python面向对象编程之继承与多态详解
Jan 16 Python
python批量替换多文件字符串问题详解
Apr 22 Python
pandas 读取各种格式文件的方法
Jun 22 Python
10分钟教你用Python实现微信自动回复功能
Nov 28 Python
在OpenCV里使用特征匹配和单映射变换的代码详解
Oct 23 Python
python的time模块和datetime模块实例解析
Nov 29 Python
Python如何实现自带HTTP文件传输服务
Jul 08 Python
Python爬虫UA伪装爬取的实例讲解
Feb 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和mysql中uft-8中文编码乱码的几种解决办法
2012/04/19 PHP
PHP中文编码小技巧
2014/12/25 PHP
Thinkphp5结合layer弹窗定制操作结果页面
2017/07/07 PHP
ie和firefox中img对象区别的困惑
2006/12/27 Javascript
javascript css在IE和Firefox中区别分析
2009/02/18 Javascript
Jquery实战_读书笔记1—选择jQuery
2010/01/22 Javascript
解析Javascript中中括号“[]”的多义性
2013/12/03 Javascript
jQuery中before()方法用法实例
2014/12/25 Javascript
四种参数传递的形式——URL,超链接,js,form表单
2015/07/24 Javascript
HTML5 JS压缩图片并获取图片BASE64编码上传
2020/11/16 Javascript
如何解决vue与传统jquery插件冲突
2017/03/20 Javascript
详解Angular 开发环境搭建
2017/06/22 Javascript
Vue computed计算属性的使用方法
2017/07/14 Javascript
利用yarn代替npm管理前端项目模块依赖的方法详解
2017/09/04 Javascript
如何将HTML字符转换为DOM节点并动态添加到文档中详解
2018/08/19 Javascript
对vue v-if v-else-if v-else 的简单使用详解
2018/09/29 Javascript
基于nodejs的雪碧图制作工具的示例代码
2018/11/05 NodeJs
Python时区设置方法与pytz查询时区教程
2013/11/27 Python
Python 多核并行计算的示例代码
2017/11/07 Python
Python文件操作基础流程解析
2020/03/19 Python
python 实现音频叠加的示例
2020/10/29 Python
CSS+jQuery+PHP+MySQL实现的在线答题功能
2015/04/25 HTML / CSS
Android本地应用打开方法——通过html5写连接
2016/03/11 HTML / CSS
英国手机零售商:Carphone Warehouse
2018/06/06 全球购物
美国瑜伽服装和装备购物网站:Mukha Yoga
2019/02/22 全球购物
Paradox London官方网站:英国新娘鞋婚礼鞋品牌
2019/08/29 全球购物
Bonprix法国:时尚、鞋子、家居
2020/12/29 全球购物
个人自我鉴定写法
2013/11/30 职场文书
幼儿园家长会欢迎词
2014/01/09 职场文书
高中生自我评语大全
2014/01/19 职场文书
革命先烈的英雄事迹材料
2014/02/15 职场文书
报告会主持词
2014/04/02 职场文书
《鸿门宴》教学反思
2014/04/22 职场文书
感恩节活动策划方案
2014/05/16 职场文书
开学第一周日记(三篇范文)
2019/08/23 职场文书
Python的property属性详细讲解
2022/04/11 Python