如何解决在python中将异常记录到日志文件中
我必须为整个应用程序创建一个日志文件,并且如果应用程序中的任何模块引发任何异常,则除了块外,异常都应进入异常,并且应将错误写入日志文件。相反,如果多个模块引发异常,则不应覆盖此日志文件,所有异常应记录到一个日志文件中。
我尝试使用以下代码记录,但未创建日志文件:
import logging
with open("D:\logfile\log.txt","w") as log:
logging.basicConfig(filename=log,level=logging.DEBUG,format='%(asctime)s %(levelname)s %(name)s %(message)s')
logger=logging.getLogger(__name__)
try:
1/0
except ZeroDivisionError as err
logger.error(err)
还使用with子句需要缩进,并且我不想在一个with子句下使用所有模块,相反,我只想在程序开始时简单地创建一个日志文件,并在程序执行和模块引发异常时将这些异常写入一个日志文件。
解决方法
我不知道日志记录模块,但是一些谷歌搜索建议日志记录模块支持将回溯写到日志文件中。另外,您的代码似乎在我的计算机上无法运行(Python v3.8.5),因此我对其进行了编辑以使其正常工作。
logging.exception('text')
将追溯记录记录到日志文件中,您可以指定一条将预先显示的消息。
代码:
import logging
#with open("log.txt","w") as log:
logging.basicConfig(filename='log.txt',level=logging.DEBUG,format='%(asctime)s %(levelname)s %(name)s %(message)s')
logger=logging.getLogger(__name__)
try:
1/0
except ZeroDivisionError:
logging.exception('Oh no! Error. Here is the traceback info:')
日志文件:
2020-08-20 08:31:02,310 ERROR root Oh no! Error. Here is the traceback info:
Traceback (most recent call last):
File "logger.py",line 7,in <module>
1/0
ZeroDivisionError: division by zero
这具有记录整个回溯的优势,通常更有用。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。