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导出Excel图表以及导出为图片的方法
Nov 07 Python
Python实现两款计算器功能示例
Dec 19 Python
Python面向对象之静态属性、类方法与静态方法分析
Aug 24 Python
windows 10 设定计划任务自动执行 python 脚本的方法
Sep 11 Python
python pycharm最新版本激活码(永久有效)附python安装教程
Sep 18 Python
利用setuptools打包python程序的方法步骤
Jan 18 Python
pandas创建DataFrame的7种方法小结
Jun 14 Python
Keras: model实现固定部分layer,训练部分layer操作
Jun 28 Python
matplotlib绘制鼠标的十字光标的实现(内置方式)
Jan 06 Python
通用的Django注册功能模块实现方法
Feb 05 Python
Python字节单位转换(将字节转换为K M G T)
Mar 02 Python
python flask开发的简单基金查询工具
Jun 02 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
第五节--克隆
2006/11/16 PHP
php去除换行符的方法小结(PHP_EOL变量的使用)
2013/02/16 PHP
CI框架给视图添加动态数据
2014/12/01 PHP
PHP实现简易计算器功能
2020/08/28 PHP
js 小贴士一星期合集
2010/04/07 Javascript
手把手教你自己写一个js表单验证框架的方法
2010/09/14 Javascript
JavaScript中toString()方法的使用详解
2015/06/05 Javascript
三种Node.js写文件的方式
2016/03/08 Javascript
HTML5基于Tomcat 7.0实现WebSocket连接并实现简单的实时聊天
2016/10/31 Javascript
Angular通过angular-cli来搭建web前端项目的方法
2017/07/27 Javascript
浅析node应用的timing-attack安全漏洞
2018/02/28 Javascript
在小程序中使用Echart图表的示例代码
2018/08/02 Javascript
javascript将扁平的数据转为树形结构的高效率算法
2020/02/27 Javascript
electron踩坑之remote of undefined的解决
2020/10/06 Javascript
JS中箭头函数与this的写法和理解
2021/01/14 Javascript
three.js 实现露珠滴落动画效果的示例代码
2021/03/01 Javascript
[03:56]还原FTP电影首映式 DOTA2群星拼出遗迹世界
2014/03/26 DOTA
python新手经常遇到的17个错误分析
2014/07/30 Python
python指定写入文件时的编码格式方法
2018/06/07 Python
详解Python中的type和object
2018/08/15 Python
Python实现微信消息防撤回功能的实例代码
2019/04/29 Python
如何在Django配置文件里配置session链接
2019/08/06 Python
Python实现微信机器人的方法
2019/09/06 Python
Python数据可视化:幂律分布实例详解
2019/12/07 Python
使用matlab 判断两个矩阵是否相等的实例
2020/05/11 Python
Python pysnmp使用方法及代码实例
2020/08/24 Python
python 日志模块logging的使用场景及示例
2021/01/04 Python
HTML5实现经典坦克大战坦克乱走还能发出一个子弹
2013/09/02 HTML / CSS
英国排名第一的LED灯泡网站:LED Bulbs
2019/09/03 全球购物
Vertbaudet西班牙网上商店:婴儿服装、童装、母婴用品和儿童家具
2019/10/16 全球购物
运动会四百米广播稿
2014/01/19 职场文书
高中生学期学习自我评价
2014/02/24 职场文书
供应链金融服务方案
2014/05/25 职场文书
我的职业生涯规划:打造自己的运动帝国
2014/09/18 职场文书
2015年个人实习工作总结
2014/12/12 职场文书
2015秋季开学典礼致辞
2015/07/16 职场文书