Python—将日志写入文件

Python—将日志写入文件,python,logging,Python,Logging,我目前有控制台的日志设置 我正在使用以下命令调用我的配置: import logging import logging.config logging.config.fileConfig('logging.conf') logger = logging.getLogger('osPatch') 我的配置是: [loggers] keys=root,osPatch [handlers] keys=consoleHandler [formatters] keys=osPatch [logge

我目前有控制台的日志设置

我正在使用以下命令调用我的配置:

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=
这使我的控制台级日志记录非常好

现在,我希望将相同的日志写入文件

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

因此,我正在编辑我的配置文件以:

[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'
回溯(最近一次呼叫最后一次):
文件“apply_errata.py”,第1行,在
导入卫星实用程序
文件“/root/config-3.1.25/automated os patching/satellite_utils.py”,第3行,在
导入系统工具
文件“/root/config-3.1.25/automated os patching/system_utils.py”,第4行,在
导入处理工具
文件“/root/config-3.1.25/automated os patching/processing_utils.py”,第7行,在
logging.config.fileConfig('logging.conf')
文件“/usr/lib64/python3.4/logging/config.py”,第85行,在fileConfig中
_安装\u记录器(cp、处理程序、禁用现有\u记录器)
安装记录器中的文件“/usr/lib64/python3.4/logging/config.py”,第253行
logger.addHandler(处理程序[手])
KeyError:'FileHandler'

我做错了什么?

不确定完整配置文件的外观,但根据我的经验,回溯表明处理程序密钥没有在处理程序部分正确声明

作为参考,这是我认为您要创建的配置文件的一个试用版:

[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=

不确定完整配置文件的外观,但根据我的经验,这种回溯表明处理程序密钥没有在处理程序部分正确声明

作为参考,这是我认为您要创建的配置文件的一个试用版:

[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=

请参阅下面的答案,如果没有帮助,可以发布您的完整配置文件,而不是非常模糊的“我从这里开始,并在这里编辑了这个”,这使得很难真正了解您的实际文件是什么样子。请参阅下面的答案,如果没有帮助,可以发布您的完整配置文件,而不是非常模糊的“我从这里开始,并在这里编辑了这个”,使您很难真正了解实际文件的外观。