第一次玩日志模块。我真的有两个问题:
我在创建 FileHandler 时发现的所有示例都只使用了一个虚拟文件名,但我希望我的日志文件具有某种标题格式。
log = time.strftime('./logs/'+'%H:%M:%S %d %b %Y', time.localtime())+'.log'
logger = logging.getLogger('myproject')
formatter = logging.Formatter('%(asctime)s %(message)s', '%H:%M:%S %d %b %Y')
handler = logging.FileHandler(log)
handler.setFormatter(formatter)
logger.addHandler(handler)
logger.setLevel(logging.DEBUG)
起初这似乎有效,因为创建了日志文件,但是当我杀死脚本并检查它时,里面什么都没有。在你建议使用之前with open(log) as f:
,使用f
代替log
inhandler = logging.FileHandler(log)
会给我关于文件甚至没有被创建的错误。我做错了什么没有写入日志文件?是因为我试图对文件名过于聪明吗?
第二个问题可能以某种方式包含第一个问题。我真正想要的是一种同时写入控制台和日志文件的方法,因为这个脚本需要很长时间,我想衡量进度。我已经看到有关于如何做到这一点的答案,例如这里,但所有这些似乎都假设我想要两个不同输出的不同级别的日志记录;我不。顺便说一句,我确实意识到如果我的脚本没有动态生成日志文件的名称,我可以做一些事情python myscript.py | tee log.file
来避免制作不同的处理程序。
由于第一个问题涉及的变量,我觉得我无法回答第二个问题,但由于疾病和随后的睡眠不足,我现在很迷茫。如果有人能像五岁的孩子一样向我解释如何以相同的输出同时写入控制台和日志文件,我将不胜感激。
非常感谢。