Python Logging 模块研究
添加时间:2013-7-25 点击量:
靠山
在一个新的项目里面参加了日记功能,想本身写一个,然则一个无意的机会,经由过程google发明Python内建了一个很是强大的日记(log)模块:logging。粗略的研究了一下,下面是我的一些心得札记。
为什么应用日记
- 追踪法度的一些运行信息,以达到时刻懂得法度运行的状况,快速捕获法度的异常,及时发明法度错误的目标
logging模块简介
从Python2.3起,Python的标准库参加了logging模块.logging模块给运行中的应用供给了一个标准的信息输出接口.典范的logging机制实现是把要输出的数据简单地写到一个txt文件中去.写log文件的体式格式是一种常见的打log的体式格式,而logging模块供给的更多,它可以把输出信息输出到所有类文件的对象中去,甚至TCP和UDP的sockets,email办事器,Unix的syslog体系,NT系列的事务log体系,内存的buffer和HTTP办事器,当然还有”真正的”文件中去.
引入logging模块:
import logging #import logging module
应用logging模块:
class CLog:
#----------------------------------------------------------------------------
def __init__(self):
self.logger = logging.getLogger()
fileHandler = logging.FileHandler(LOG_FILE_PATH)
formatHandler = logging.Formatter(%(asctime)s %(levelname)s: %(message)s)
fileHandler.setFormatter(formatHandler)
self.logger.addHandler(fileHandler)
self.logger.setLevel(logging.NOTSET)
#----------------------------------------------------------------------------
def DebugMessage(self,msg):
self.logger.debug(msg)
pass
oCLog = CLog()
上方定义了一个简单的log模块,我想用这一段简单的代码来描述一下logging模块
logger
获取log的一个实例,这个项目组代码分别做得很好,可以经由过程增长不合的handler来雄厚log实例的特点
FileHandler
指定了Log的输出端是文件,经由过程传入文件路劲来指定输出文件,我们可认为Log定义其他的输出端例如StreamHandler,以及其他各类错杂的输出体式格式,文件是可能是最常用的体式格式,其他体式格式有待慢慢摸索
FormatHandler
FomartHandler指定了FileHandler的输出格局,例如我应用了以下的格局:(%(asctime)s %(levelname)s: %(message)s),则输出的文本格局为:
有关format的关键字,例如asctime,levelname,可参考LogRecord attributes 官方文档
Level
Logging模块定义了5种log信息的优先级
Level When it’s used
DEBUG无论对感情还是对生活,“只要甜不要苦”都是任性而孩子气的,因为我们也不完美,我们也会伤害人。正因为我们都不完美,也因为生活从不是事事如意,所以对这些“瑕疵”的收纳才让我们对生活、对他人的爱变得日益真实而具体。—— 汪冰《世界再亏欠你,也要敢于拥抱幸福》
靠山
在一个新的项目里面参加了日记功能,想本身写一个,然则一个无意的机会,经由过程google发明Python内建了一个很是强大的日记(log)模块:logging。粗略的研究了一下,下面是我的一些心得札记。
为什么应用日记
- 追踪法度的一些运行信息,以达到时刻懂得法度运行的状况,快速捕获法度的异常,及时发明法度错误的目标
logging模块简介
从Python2.3起,Python的标准库参加了logging模块.logging模块给运行中的应用供给了一个标准的信息输出接口.典范的logging机制实现是把要输出的数据简单地写到一个txt文件中去.写log文件的体式格式是一种常见的打log的体式格式,而logging模块供给的更多,它可以把输出信息输出到所有类文件的对象中去,甚至TCP和UDP的sockets,email办事器,Unix的syslog体系,NT系列的事务log体系,内存的buffer和HTTP办事器,当然还有”真正的”文件中去.
引入logging模块:
import logging #import logging module
应用logging模块:
class CLog:
#----------------------------------------------------------------------------
def __init__(self):
self.logger = logging.getLogger()
fileHandler = logging.FileHandler(LOG_FILE_PATH)
formatHandler = logging.Formatter(%(asctime)s %(levelname)s: %(message)s)
fileHandler.setFormatter(formatHandler)
self.logger.addHandler(fileHandler)
self.logger.setLevel(logging.NOTSET)
#----------------------------------------------------------------------------
def DebugMessage(self,msg):
self.logger.debug(msg)
pass
oCLog = CLog()
上方定义了一个简单的log模块,我想用这一段简单的代码来描述一下logging模块
logger
获取log的一个实例,这个项目组代码分别做得很好,可以经由过程增长不合的handler来雄厚log实例的特点
FileHandler
指定了Log的输出端是文件,经由过程传入文件路劲来指定输出文件,我们可认为Log定义其他的输出端例如StreamHandler,以及其他各类错杂的输出体式格式,文件是可能是最常用的体式格式,其他体式格式有待慢慢摸索
FormatHandler
FomartHandler指定了FileHandler的输出格局,例如我应用了以下的格局:(%(asctime)s %(levelname)s: %(message)s),则输出的文本格局为:
有关format的关键字,例如asctime,levelname,可参考LogRecord attributes 官方文档
Level
Logging模块定义了5种log信息的优先级
Level | When it’s used |
---|---|
DEBUG无论对感情还是对生活,“只要甜不要苦”都是任性而孩子气的,因为我们也不完美,我们也会伤害人。正因为我们都不完美,也因为生活从不是事事如意,所以对这些“瑕疵”的收纳才让我们对生活、对他人的爱变得日益真实而具体。—— 汪冰《世界再亏欠你,也要敢于拥抱幸福》 |