Любой способ сохранить объект трассировки в Python

Я искал, возможно, попытаться сохранить объект трассировки и каким-то образом засолить его в файл, к которому я могу получить доступ. Пример использования этого случая: если я отправляю некоторый код Python на компьютер фермы для запуска, и он не работает, было бы неплохо иметь возможность открыть сеанс и получить доступ к этой трассировке, чтобы отладить проблему, а не просто увидеть журнал трассировки. Я не знаю, есть ли какой-нибудь способ сделать это, но подумал, что стоит спросить, почему это не так.

2 ответа

Хорошо, так что вы можете использовать traceback.print_exception(type, value, traceback[, limit[, file]]) и сохранить его в текстовом или JSON или вы можете обратиться к документам

если вы найдете это полезным, пожалуйста, отметьте это правильно или upvote спасибо..:)

В зависимости от того, как вы написали свой код, оператор try, вероятно, будет вашим лучшим ответом. Поскольку любая ошибка - это просто класс, который наследует встроенные в Python ExceptionВы можете вызывать пользовательские ошибки везде, где вам нужно больше информации о сгенерированной ошибке. Вам просто нужно переименовать ваши ошибки или передать соответствующую строку в качестве первого аргумента. Если вы тогда try ваш код и используйте оператор кроме except CustomError as eВы можете извлекать всю информацию, которую хотите из e, в операторе исключений как обычный экземпляр. Пример:

Ваш код будет:

def script():
    try: codeblock
    except Exception as e: raise Error1('You hit %s error in the first block'% e)
    try: codeblock 2
    except Exception as e: raise Error2('You hit %s error in the second block' % e)

try: script()
except Exception as e:
    with open('path\to\file.txt','w') as outFile:
        outFile.write(e)

Последняя часть на самом деле не более, чем создание собственного файла журнала, но вы должны где-то записать его, верно?

Что касается использования traceback модуль, упомянутый выше, вы можете получить информацию об ошибке из этого. Любая из приведенных здесь команд может предоставить вам список обратных ссылок: http://docs.python.org/2/library/traceback.html

С другой стороны, если вы пытаетесь избежать просмотра файлов журнала, модуль traceback предоставит вам только то же самое, что и файл журнала, в другом формате. Добавление ваших собственных сообщений об ошибках в ваш код дает вам больше информации, чем загадочные ValueError о том, что на самом деле произошло. Если вы напечатаете трассировку с вашей специальной ошибкой, она может дать вам еще больше информации по вашей проблеме.

Другие вопросы по тегам