Итак, я использую модуль регистрации исключений, который я нашел и немного изменил. Но я не могу понять, почему он не будет создавать файл и писать ему.Запись в Python не будет записываться в файл
Это мой модуль:
"""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)
Вы должны удалить лишние запятые на 'format' аргумент' logging.basicConfig'. Кроме того, когда вы вызываете 'log_exception()', 'logger' является ссылкой на' logging', а не на переменную 'logger', используемую в' setup_logging_to_file', потому что глобальные переменные являются «только для чтения». Вы должны использовать аргумент функции. С другой стороны, я не понимаю, почему вы написали 'logger = logging': просто используйте' logging' –
Что означает, что вы вызываете 'setup_logging_to_file' при запуске? Откуда вы это называете? – Railslide
Я хотел создать модуль для ведения журнала проекта, чтобы я мог просто вызвать функцию log_exception в любом из моих блоков try/catch. Когда я запускаю свой проект, я вызываю 'setup_logging_to_file()' для инициализации моей переменной logger, но я изменил это с того, что @ Loïc G сказал – john