在python中将异常记录到日志文件中

在python中将异常记录到日志文件中,python,exception,logging,Python,Exception,Logging,我必须为整个应用程序创建一个单独的日志文件,如果应用程序中的任何模块引发任何异常,异常应进入except块,错误应写入日志文件。不应替代此日志文件。如果多个模块引发异常,则应将所有异常记录到一个日志文件中 我用以下代码尝试了logger,但它没有创建日志文件: 导入日志 打开(“D:\logfile\log.txt”、“w”)作为日志: logging.basicConfig(filename=log,level=logging.DEBUG,格式='%(asctime)s%(levelname)

我必须为整个应用程序创建一个单独的日志文件,如果应用程序中的任何模块引发任何异常,异常应进入except块,错误应写入日志文件。不应替代此日志文件。如果多个模块引发异常,则应将所有异常记录到一个日志文件中

我用以下代码尝试了logger,但它没有创建日志文件:

导入日志
打开(“D:\logfile\log.txt”、“w”)作为日志:
logging.basicConfig(filename=log,level=logging.DEBUG,格式='%(asctime)s%(levelname)s%(name)s%(message)s')
logger=logging.getLogger(_名称__)
尝试:
1/0
除了零错误作为错误
记录器错误(err)

同样,使用with子句需要缩进,我不想使用with子句下的所有模块,我只想在程序开始时创建一个日志文件,当程序执行并且模块引发异常时,这些异常应该写入一个日志文件。

我不知道日志模块,但一些谷歌搜索建议日志模块支持将回溯写入日志文件。另外,您的代码似乎在我的机器(PythonV3.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
2020-08-2008:31:02310错误根哦,不!错误。以下是回溯信息:
回溯(最近一次呼叫最后一次):
文件“logger.py”,第7行,在
1/0
ZeroDivision错误:被零除

这样做的好处是,整个回溯都会被记录下来,这通常会更有帮助。

我不确定是否理解,使用logger模块不需要打开这样的文件。你可以先用部分去掉
。你能澄清一下你的问题吗?代码出了什么问题?是否有错误?你期望什么样的行为,你会得到什么样的行为?还要注意,将文件对象传递给参数filename应该会告诉您重新阅读
日志记录
文档。