Python Logging 模块研究

    添加时间:2013-7-25 点击量:

    靠山


    在一个新的项目里面参加了日记功能,想本身写一个,然则一个无意的机会,经由过程google发明Python内建了一个很是强大的日记(log)模块:logging。粗略的研究了一下,下面是我的一些心得札记。


    为什么应用日记



    • 追踪法度的一些运行信息,以达到时刻懂得法度运行的状况,快速捕获法度的异常,及时发明法度错误的目标


    logging模块简介


    Python2.3,Python的标准库参加了logging模块.logging模块给运行中的应用供给了一个标准的信息输出接口.典范的logging机制实现是把要输出的数据简单地写到一个txt文件中去.log文件的体式格式是一种常见的打log的体式格式logging模块供给的更多它可以把输出信息输出到所有类文件的对象中去甚至TCPUDPsockets,email办事器,Unixsyslog体系,NT系列的事务log体系内存的bufferHTTP办事器当然还有真正的文件中去.


    引入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信息的优先级








    LevelWhen it’s used
    DEBUG无论对感情还是对生活,“只要甜不要苦”都是任性而孩子气的,因为我们也不完美,我们也会伤害人。正因为我们都不完美,也因为生活从不是事事如意,所以对这些“瑕疵”的收纳才让我们对生活、对他人的爱变得日益真实而具体。—— 汪冰《世界再亏欠你,也要敢于拥抱幸福》
    分享到: