Traceback (most recent call last):
File "/usr/lib64/python2.6/logging/handlers.py", line 76, in emit
if self.shouldRollover(record):
File "/usr/lib64/python2.6/logging/handlers.py", line 150, in shouldRollover
self.stream.seek(0, 2) #due to non-posix-compliant Windows feature
ValueError: I/O operation on closed file
我的脚本中有一行:
handler = logging.handlers.RotatingFileHandler(cfg_obj.log_file,maxBytes = maxlog_size, backupCount = 10)
没有错误消息时,它运行良好。但是,当有错误日志时,除非重新启动该过程,否则错误后的日志不会写入文件中。我们不想每次出现错误时都重新启动该过程。
感谢您的帮助!
最佳答案
我强烈建议您使用配置文件。例如,“ logging.conf”下面的配置代码具有不同的处理程序和格式化程序:
[loggers]
keys=root
[handlers]
keys=consoleHandler, rotatingFileHandler
[formatters]
keys=simpleFormatter, extendedFormatter
[logger_root]
level=DEBUG
handlers=consoleHandler, rotatingFileHandler
[handler_consoleHandler]
class=StreamHandler
level=DEBUG
formatter=simpleFormatter
args=(sys.stdout,)
[handler_rotatingFileHandler]
class=handlers.RotatingFileHandler
level=INFO
formatter=extendedFormatter
args=('path/logs_file.log', 'a', 2000000, 1000)
[formatter_simpleFormatter]
format=%(asctime)s - %(levelname)s - %(message)s
datefmt=
[formatter_extendedFormatter]
format= %(asctime)s - %(levelname)s - %(filename)s:%(lineno)s - %(funcName)s() %(message)s
datefmt=
现在如何使用它“ main.py”:
import logging.config
# LOGGER
logging.config.fileConfig('path_to_conf_file/logging.conf')
LOGGER = logging.getLogger('root')
try:
LOGGER.debug("Debug message...")
LOGGER.info("Info message...")
except Exception as e:
LOGGER.exception(e)
让我知道您是否需要更多帮助。
关于python - 遇到错误后RotatingFileHandler不会继续记录,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39983860/