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 相关文章推荐
tensorflow TFRecords文件的生成和读取的方法
Feb 06 Python
python利用插值法对折线进行平滑曲线处理
Dec 25 Python
实例详解python函数的对象、函数嵌套、名称空间和作用域
May 31 Python
python3+django2开发一个简单的人员管理系统过程详解
Jul 23 Python
Python Django Cookie 简单用法解析
Aug 13 Python
Python 文件数据读写的具体实现
Jan 24 Python
详解有关PyCharm安装库失败的问题的解决方法
Feb 02 Python
python实现堆排序的实例讲解
Feb 21 Python
Python 去除字符串中指定字符串
Mar 05 Python
Python日志:自定义输出字段 json格式输出方式
Apr 27 Python
python 线程的五个状态
Sep 22 Python
Python第三方库安装缓慢的解决方法
Feb 06 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
「OVERLORD」动画重要删减!雅儿贝德的背叛?至尊猎杀队结成
2020/04/09 日漫
浅析Mysql 数据回滚错误的解决方法
2013/08/05 PHP
简要剖析PHP的Yii框架的组件化机制的基本知识
2016/03/17 PHP
PHP中抽象类和抽象方法概念与用法分析
2016/05/24 PHP
Laravel + Elasticsearch 实现中文搜索的方法
2020/02/02 PHP
javascript题目,重写函数让其无限相加
2012/02/15 Javascript
js数组Array sort方法使用深入分析
2013/02/21 Javascript
关于Jquery操作Cookie取值错误的解决方法
2013/08/26 Javascript
js形成页面的一种遮罩效果实例代码
2014/01/04 Javascript
JavaScript中对象属性的添加和删除示例
2014/05/12 Javascript
JavaScript子窗口调用父窗口变量和函数的方法
2015/10/09 Javascript
jQuery移动web开发之页面跳转和加载外部页面的实现
2015/12/04 Javascript
JavaScript控制浏览器全屏及各种浏览器全屏模式的方法、属性和事件
2015/12/20 Javascript
javascript replace()第二个参数为函数时的参数用法
2016/12/26 Javascript
jquery请求servlet实现ajax异步请求的示例
2017/06/03 jQuery
JS实现快递单打印功能【推荐】
2018/06/21 Javascript
VUE+Element UI实现简单的表格行内编辑效果的示例的代码
2018/10/31 Javascript
node删除、复制文件或文件夹示例代码
2019/08/13 Javascript
Vue图片浏览组件v-viewer用法分析【支持旋转、缩放、翻转等操作】
2019/11/04 Javascript
如何在vue 中引入使用jquery
2020/11/10 jQuery
[01:03]PWL开团时刻DAY6——别打我
2020/11/05 DOTA
简单的Python抓taobao图片爬虫
2014/10/26 Python
Python编程中用close()方法关闭文件的教程
2015/05/24 Python
python3.5使用tkinter制作记事本
2016/06/20 Python
python中Pycharm 输出中文或打印中文乱码现象的解决办法
2017/06/16 Python
python脚本替换指定行实现步骤
2017/07/11 Python
使用python采集脚本之家电子书资源并自动下载到本地的实例脚本
2018/10/23 Python
利用 Flask 动态展示 Pyecharts 图表数据方法小结
2019/09/04 Python
Python制作简易版小工具之计算天数的实现思路
2020/02/13 Python
Python Dict找出value大于某值或key大于某值的所有项方式
2020/06/05 Python
python中pandas库中DataFrame对行和列的操作使用方法示例
2020/06/14 Python
森林防火宣传标语
2014/06/27 职场文书
放飞理想演讲稿
2014/09/09 职场文书
2015年仓库管理工作总结
2015/05/25 职场文书
Oracle11g R2 安装教程完整版
2021/06/04 Oracle
OpenCV-Python实现轮廓的特征值
2021/06/09 Python