【发布时间】:2015-12-04 16:29:36
【问题描述】:
所以我正在使用我发现并稍微调整的异常日志记录模块。但我似乎无法弄清楚为什么它不会创建一个文件并写入它。
这是我的模块:
"""Exception logging"""
import sys
import traceback
import logging
logger = logging
def setup_logging_to_file():
logger = logging.basicConfig( filename='error_log.txt',
filemode='w',
level=logging.DEBUG,
format= '%(asctime)s - %(levelname)s - %(message)s',
)
def log_exception(e):
logger.error(
"Function {function_name} raised {exception_class} ({exception_docstring}): {exception_message}".format(
function_name = extract_function_name(), #this is optional
exception_class = e.__class__,
exception_docstring = e.__doc__,
exception_message = e.message))
def extract_function_name():
tb = sys.exc_info()[-1]
stk = traceback.extract_tb(tb, 1)
fname = stk[0][3]
return fname
我在启动时运行 setup_logging_to_file(),然后每当遇到异常时,我都会调用 log_exception 并将异常传递给它,但它甚至不会创建 error_log.txt 文件
from app.exception_logging import log_exception, setup_logging_to_file
def myFunc():
try:
....
except Exception as ex:
log_exception(ex)
【问题讨论】:
-
您应该删除
logging.basicConfig的format参数上的多余逗号。此外,当您调用log_exception()时,logger是对logging的引用,而不是setup_logging_to_file中使用的logger变量,因为全局变量是“只读的”。您应该使用函数参数。另一方面,我不明白你为什么写logger = logging:就用logging -
启动时调用
setup_logging_to_file是什么意思?你从哪里称呼它? -
我想创建一个项目范围的日志记录模块,这样我就可以在我的任何 try/catch 块中调用
log_exception函数。当我启动我的项目时,我调用setup_logging_to_file()来初始化我的记录器变量,但我改变了@Loïc G 所说的
标签: python exception error-logging