2017-07-27 125 views
1

我目前有控制台的日志记录设置。Python - 将日志写入文件

进出口使用调用我的配置:

import logging 
import logging.config 

logging.config.fileConfig('logging.conf') 
logger = logging.getLogger('osPatch') 

我的配置是::

[loggers] 
keys=root,osPatch 

[handlers] 
keys=consoleHandler 

[formatters] 
keys=osPatch 

[logger_root] 
level=DEBUG 
handlers=consoleHandler 

[logger_osPatch] 
level=DEBUG 
handlers=consoleHandler 
qualname=osPatch 
propagate=0 

[handler_consoleHandler] 
class=StreamHandler 
level=DEBUG 
formatter=osPatch 
args=(sys.stdout,) 

[formatter_osPatch] 
format=%(asctime)s - %(name)s - %(levelname)s - %(message)s 
datefmt= 

这给了我安慰级别的记录完全正常。

现在我想要将相同的日志写入文件。

我想要做的是编辑我的配置文件并使用fileHandler

因此,进出口编辑我的配置文件:

[loggers] 
keys=root,osPatch 

[handlers] 
keys=consoleHandler,FileHandler 

[handler_FileHandler] 
filename=example.log 
level=DEBUG 
formatter=osPatch 

这给了我一个错误:

Traceback (most recent call last): 
    File "apply_errata.py", line 1, in <module> 
    import satellite_utils 
    File "/root/config-3.1.25/automated-os-patching/satellite_utils.py", line 3, in <module> 
    import system_utils 
    File "/root/config-3.1.25/automated-os-patching/system_utils.py", line 4, in <module> 
    import processing_utils 
    File "/root/config-3.1.25/automated-os-patching/processing_utils.py", line 7, in <module> 
    logging.config.fileConfig('logging.conf') 
    File "/usr/lib64/python3.4/logging/config.py", line 85, in fileConfig 
    _install_loggers(cp, handlers, disable_existing_loggers) 
    File "/usr/lib64/python3.4/logging/config.py", line 253, in _install_loggers 
    logger.addHandler(handlers[hand]) 
KeyError: 'FileHandler' 

我在做什么错在这里?

+1

见下面回答,如果没有帮助,也许发表您的完整配置文件,而不是相当模糊的“我从此开始,并在此处进行编辑”,使得很难真正知道您的实际文件是什么样子。 – bgse

回答

1

不知道你的完整配置文件的外观如何,但我的经验中的回溯表明处理程序密钥未在处理程序部分中正确声明。

以供参考,这是配置文件,我认为你的目标是创建的尝试和工作版本:

[loggers] 
keys=root,osPatch 

[handlers] 
keys=consoleHandler,FileHandler 

[formatters] 
keys=osPatch 

[logger_root] 
level=DEBUG 
handlers=consoleHandler,FileHandler 

[logger_osPatch] 
level=DEBUG 
handlers=consoleHandler,FileHandler 
qualname=osPatch 
propagate=0 

[handler_consoleHandler] 
class=StreamHandler 
level=DEBUG 
formatter=osPatch 
args=(sys.stdout,) 

[handler_FileHandler] 
class=FileHandler 
level=DEBUG 
formatter=osPatch 
args=('example.log',) 

[formatter_osPatch] 
format=%(asctime)s - %(name)s - %(levelname)s - %(message)s 
datefmt=