注意:这个问题是基于Python通过日志记录发出错误消息的假设。答案表明这个假设是错误的。运行代码的其余部分之前,python程序可以配置日志记录吗?
我正在开发一个程序,它不是从命令行启动的,而是由一个守护进程启动的。 Stderr被重定向到空设备。
正常情况下,它会将消息记录到文件中,但是如果某个错误阻止了常规启动,则不会读取错误消息,因为它已发送到空设备。
为了在这种情况下节省一点调试时间,我尝试了一下“启动程序”,它首先将根文件处理程序添加到根记录器。
我已在realprog
模块中对其进行了故意语法错误的测试。它将两个“开始”消息记录到文件,但语法错误的追溯仍然打印到stderr。能否请你帮忙?
import logging
logger = logging.getLogger()
logger.setLevel(logging.INFO)
logger.addHandler(logging.FileHandler('test.log'))
logger.info("logging start")
def real_start():
# assume e.g. a syntax error in the realprog
import realprog
realprog.main()
if __name__ == '__main__':
logger.info("program start")
real_start()
你可以发布你的错误信息吗? – haifzhan
@HaifengZhang:'import realprog'失败,语法错误如预期。没有其他消息。它是标准回溯的标准消息。消息本身没有任何问题,除非它被打印,没有记录到文件。你需要这个错误信息吗? – VPfB