2016-02-05 67 views
1

我只是熟悉日志模块,并且对处理不同级别的正确方法感到困惑。这flow chart表示没有低于设置的级别传递给记录器对象,那么为什么有人会记录任何低于设置的水平?我应该制作多个日志文件吗?例如,logging.basicConfig(filename='general_log.log',level=logging.WARNING)logging.basicConfig(filename='detailed_log.log',level=logging.DEBUG)在单个脚本中?多个日志文件

+0

因为你将有所有不同层次的脚本日志记录电话,但是当你如释放它,您可能会更改级别以仅显示致命错误。 – L3viathan

+0

对不起,我还是有点困惑。那么答案是要改变日志级别?所以我只能记录警告,但如果它有严重的崩溃,我想看到所有我改变它来显示我调试和? –

+1

@G华纳是的,这就是主意。我同意haifzhan的回答。 – L3viathan

回答

0

多个日志记录级别用于不同的目的。例如,作为开发人员,当您开发一些新功能时,您可以将日志记录级别设置为DEBUG,这可以帮助您调试代码,并且在生产中运行程序时可以将日志记录级别设置为INFO。所有的调试级别记录都将被静音。

您可以制作多个日志文件。例如,如果您想更容易地跟踪ERROR日志,则可以将它们记录到单独的文件中,并节省时间以在常规日志文件中找到它们。

0

https://docs.python.org/2/library/logging.html#logging.basicConfig

This function does nothing if the root logger already has handlers configured for it. 

调用logging.basicConfig第二次可能不会做任何事情。

要登录到多个文件,你需要配置一个或多个处理程序:

LOGGING = { 
    'version': 1, 
    'disable_existing_loggers': False, 
    'formatters': { 
     'verbose': { 
      'format': '%(levelname)s %(asctime)s %(process)d %(thread)d %(name)s:%(lineno)s %(funcName)s() %(message)s' 
     }, 
    }, 
    'handlers': { 
     'file1': { 
      'level': 'WARNING', 
      'class': 'logging.FileHandler', 
      'filename': 'general_log.log', 
      'formatter': 'verbose', 
     }, 
     'file2': { 
      'level': 'DEBUG', 
      'class': 'logging.FileHandler', 
      'filename': 'detailed_log.log', 
      'formatter': 'verbose', 
     }, 
    }, 
    'root': { 
     'handlers': ['file1', 'file2'], 
     'level': 'DEBUG', 
    } 
} 
logging.config.dictConfig(LOGGING)