2016-06-09 69 views
0

该代码片段创建一个日志过滤器,将错误级别及以上级别放入控制台和DEBUG中,并放入日志文件中。我似乎无法弄清楚的是如何在我的各个模块中重复使用该配置,以便我写入相同的日志文件,但名称正确指示生成该消息的模块。重复使用python模块上的日志记录配置

在此先感谢!

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') 

回答

0

这似乎是工作,但我不知道这是最好的解决办法: #noralog.py 高清setup_logging(的localName): 进口记录

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') 
相关问题