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中如何使用正则表达式的非贪婪模式示例
Oct 09 Python
TensorFlow搭建神经网络最佳实践
Mar 09 Python
PYTHON EVAL的用法及注意事项解析
Sep 06 Python
Python基于DB-API操作MySQL数据库过程解析
Apr 23 Python
在Pytorch中使用Mask R-CNN进行实例分割操作
Jun 24 Python
pytorch 多分类问题,计算百分比操作
Jul 09 Python
python 代码运行时间获取方式详解
Sep 18 Python
Django如何使用asyncio协程和ThreadPoolExecutor多线程
Oct 12 Python
OpenCV+python实现膨胀和腐蚀的示例
Dec 21 Python
Python读取ini配置文件传参的简单示例
Jan 05 Python
Python实战之用tkinter库做一个鼠标模拟点击器
Apr 27 Python
python运行脚本文件的三种方法实例
Jun 25 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编程开发“虚拟域名”系统
2006/10/09 PHP
php+mysql写的简单留言本实例代码
2008/07/25 PHP
PHP异常处理浅析
2015/05/12 PHP
微信公众平台开发之配置与请求
2015/08/26 PHP
ThinkPHP的SAE开发相关注意事项详解
2016/10/09 PHP
PHP实现图片的等比缩放和Logo水印功能示例
2017/05/04 PHP
Laravel 登录后清空COOKIE的操作方法
2019/10/14 PHP
繁简字转换功能
2006/07/19 Javascript
在JS中最常看到切最容易迷惑的语法(转)
2010/10/29 Javascript
js判断客户端是iOS还是Android等移动终端的方法
2013/12/11 Javascript
javascript实现倒计时并弹窗提示特效
2015/06/05 Javascript
js实现a标签超链接提交form表单的方法
2015/06/24 Javascript
javascript执行环境及作用域详解
2016/05/05 Javascript
从零学习node.js之利用express搭建简易论坛(七)
2017/02/25 Javascript
Vue2 配置 Axios api 接口调用文件的方法
2017/11/13 Javascript
对vue 键盘回车事件的实例讲解
2018/08/25 Javascript
VueJs里利用CryptoJs实现加密及解密的方法示例
2019/04/29 Javascript
微信小程序上传文件到阿里OSS教程
2019/05/20 Javascript
Nuxt配置Element-UI按需引入的操作方法
2020/07/06 Javascript
ES6中的Javascript解构的实现
2020/10/30 Javascript
合并Excel工作薄中成绩表的VBA代码,非常适合教育一线的朋友
2009/04/09 Python
Python实现计算最小编辑距离
2016/03/17 Python
对web.py设置favicon.ico的方法详解
2018/12/04 Python
python加载自定义词典实例
2019/12/06 Python
python opencv把一张图片嵌入(叠加)到另一张图片上的实现代码
2020/06/11 Python
matplotlib基础绘图命令之imshow的使用
2020/08/13 Python
CSS3 3D立方体效果示例-transform也不过如此
2016/12/05 HTML / CSS
葡萄牙鞋子品牌:Fair
2016/12/10 全球购物
会计专业毕业生自荐信范文
2013/12/20 职场文书
学生评语大全
2014/04/18 职场文书
关于读书的演讲稿1000字
2014/08/27 职场文书
工作试用期自我评价
2015/03/10 职场文书
2015年乡镇工会工作总结
2015/05/19 职场文书
2019大学生实习报告
2019/06/21 职场文书
浅谈哪个Python库才最适合做数据可视化
2021/06/28 Python
springboot+rabbitmq实现智能家居实例详解
2022/07/23 Java/Android