zoukankan      html  css  js  c++  java
  • 关于解决logging模块写出的日志信息重复的问题

       一般情况下,我们在利用logging模块记录日志的时候,往往会利用下面这种方式进行日志信息的记录:

    import logging
    
    def logger_file():
        #生成logger对象
        whw_logger = logging.getLogger('whw.log')
        whw_logger.setLevel(logging.INFO)
        #生成handler对象
        whw_fh = logging.FileHandler('whw.log')
        whw_fh.setLevel(logging.INFO)
        #生成Formatter对象
        file_formatter = logging.Formatter(' %(asctime)s - %(name)s - %(levelname)s - %(message)s ')
        #把formatter对象绑定到handler对象中
        whw_fh.setFormatter(file_formatter)
        # 把handler对象绑定到logger对象中
        whw_logger.addHandler(whw_fh)
        return whw_logger
    
    if __name__ == '__main__':
        while 1:
            s = input('请输入日志信息:')
            logger_file().info(s)

      生成的log日志里总会出现重复的同一条信息:

      我们可以再写一个方法,将写好的信息处理一下:

    def write_log(msg):
        log_obj = logger_file()
        log_obj.info(msg)
        log_obj.handlers.pop()

      这样,完整的代码如下:

    import logging
    
    def logger_file():
        #生成logger对象
        whw_logger = logging.getLogger('whw.log')
        whw_logger.setLevel(logging.INFO)
        #生成handler对象
        whw_fh = logging.FileHandler('whw.log')
        whw_fh.setLevel(logging.INFO)
        #生成Formatter对象
        file_formatter = logging.Formatter(' %(asctime)s - %(name)s - %(levelname)s - %(message)s ')
        #把formatter对象绑定到handler对象中
        whw_fh.setFormatter(file_formatter)
        # 把handler对象绑定到logger对象中
        whw_logger.addHandler(whw_fh)
        return whw_logger
    
    def write_log(msg):
        log_obj = logger_file()
        log_obj.info(msg)
        log_obj.handlers.pop()
    
    
    if __name__ == '__main__':
        while 1:
            s = input('请输入日志信息:')
            write_log(s)

      对于同样的输入,我们得到的结果就没有了重复信息:

  • 相关阅读:
    Class.forName()用法详解 【转】
    Java ——代理模式[转发]
    Java堆和栈的区别
    CSS中文字体的英文名称(simsun)宋体,(Microsoft YaHei)微软雅黑
    学了一个封装的jquery插件,感觉还成
    视差滚动(Parallax Scrolling)效果的原理和实现
    解决jQuery中dbclick事件触发两次click事件
    jquery之stop()的用法
    创意 idea
    软件开发方法的综述
  • 原文地址:https://www.cnblogs.com/paulwhw/p/9031836.html
Copyright © 2011-2022 走看看