【问题标题】:reusing logging config across python modules跨 python 模块重用日志配置
【发布时间】:2016-10-10 00:37:43
【问题描述】:

这个 sn-p 创建一个日志过滤器,将 ERROR 及以上级别放入控制台,将 DEBUG 及以上级别放入日志文件。我似乎无法弄清楚如何在我的各个模块中重用该配置,以便我写入同一个日志文件,但 name 正确指示生成消息的模块。

提前致谢!

import logging


default_formatter = logging.Formatter(
    "%(asctime)s:%(name)s:%(levelname)s:%(message)s")

console_handler = logging.StreamHandler()
console_handler.setLevel(logging.ERROR)
console_handler.setFormatter(default_formatter)

file_handler = logging.FileHandler("error.log", "a")
file_handler.setLevel(logging.DEBUG)
file_handler.setFormatter(default_formatter)

noralog = logging.getLogger(__name__)
noralog.setLevel(logging.DEBUG)
noralog.addHandler(console_handler)
noralog.addHandler(file_handler)

noralog.debug('PUT ME ONLY IN THE FILE')
noralog.error('STREAM AND FILE')

【问题讨论】:

    标签: python-2.7 logging


    【解决方案1】:

    这似乎可行,但我不确定它是否是最佳解决方案: #noralog.py def setup_logging(本地名称): 导入日志

        default_formatter = logging.Formatter(
                "%(asctime)s:%(name)s:%(levelname)s:%(message)s")
    
        console_handler = logging.StreamHandler()
        console_handler.setLevel(logging.ERROR)
        console_handler.setFormatter(default_formatter)
    
        file_handler = logging.FileHandler("error.log", "a")
        file_handler.setLevel(logging.DEBUG)
        file_handler.setFormatter(default_formatter)
    
        noralog = logging.getLogger(localname)
        noralog.setLevel(logging.DEBUG)
        noralog.addHandler(console_handler)
        noralog.addHandler(file_handler)
        return noralog
    
    
    #othermod.py
    import noralog
    
    ff = noralog.setup_logging(__name__)
    ff.debug('PUT THIS ONLY IN FILE LOG')
    ff.error('PUT THIS IN STREAM AND FILE LOG')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-01-13
      • 2017-07-28
      • 2014-06-11
      • 1970-01-01
      • 2011-02-27
      • 1970-01-01
      • 2013-03-30
      • 2014-10-21
      相关资源
      最近更新 更多