我有一个我想输出日志记录的功能。日志文件是程序输出的一部分,作为函数何时执行的操作(即不仅仅是调试或死后事件)的记录,因此我想将它们存储在特定位置。该位置是从配置文件加载的,但我想在读取配置文件时记录成功或失败!
所以我无法在阅读配置之后创建日志文件,但在我可以记录该过程之前我不想阅读配置。
有没有办法将一组日志语句推迟到以后写入文件?该功能的简化版本如下:显然它不会运行,因为logfile
直到稍后才可用。
看起来basicConfig(..., delay=True)
可能是答案,但听起来只会处理第一次记录事件的延迟。是否有更多日志记录事件的答案?
import logging
import json
def record(config):
logger = logging.getLogger(LOG)
logging.basicConfig(filename=logfile, level=logging.INFO)
logger.info('Start of continuous sampling')
# Load the config file
try:
config = json.load(open(config_file))
logfile = config['logfile']
logger.info('Config file found')
except IOError:
logger.critical('Config file not found')
sys.exit()
答案 0 :(得分:0)
有多种选择,但这里有两个相当简单的选项:
选项1
开始登录临时文件。如果您能够解析配置文件,请复制临时文件内容和change the logging file handle。如果出现错误,请将临时文件转储到stdout。
选项2
创建一个包装类,只要配置文件不可用,就会延迟对记录器的调用。
的内容class MyLogger(object):
def __init__(self, ...)
self.logger = ... # temp file
def info(self, msg):
self.logger.info(msg)
def changeLogfile(self, f):
self.logger = ... # now writing to f
config['logfile']
可用后,请致电mylogger.changeLogfile()
并继续记录。