Как перехватить полную трассировку стека при входе в Julia - PullRequest
2 голосов
/ 14 февраля 2020

Я пытаюсь написать собственный регистратор. В настоящее время, когда я вхожу в систему, я просто получаю название ошибки и строку, на которой она произошла. Если я хочу записать полную трассировку стека, я подумал, что буду использовать LogLevel из документов , но неясно, как я использовал бы это для захвата полной трассировки стека. У меня сейчас есть следующее:

using Logging
io = open("log.txt", "w+")
LogLevel(1000001) # see https://github.com/JuliaLang/julia/blob/2d5741174ce3e6a394010d2e470e4269ca54607f/base/logging.jl#L90-L98
logger = SimpleLogger(io)
global_logger(logger)

try
    a+1
catch e
    @warn "failure" exception=e
    @info("a global log message")
end

close(io)

1 Ответ

5 голосов
/ 14 февраля 2020

Как сказано в документах :

Соответствующая обратная трассировка bt может быть присоединена с помощью кортежа exception=(ex,bt)

Так что попробуйте

@warn "failure" exception=(e, catch_backtrace())
...