Пролог -Webframework - Как установить локальные переменные потока для ведения журнала при компиляции с флагом `--threads:on`?
Я пишу веб-приложение в nim, используя пролог веб-фреймворка и норму ORM. Я обнаружил, что лог-сообщения о прологе и норме, которые обычно появляются в терминале при запуске приложения, исчезают, когда вы компилируете с помощью
--threads:on
флаг.
Это связано с тем, что обработчики сообщений журнала и уровни журнала устанавливаются как локальные переменные потока, поэтому при создании нового потока уровень журнала должен быть снова установлен для этого потока и т. д.
Тем не менее, пролог создает экземпляры потоков, так как мне правильно настроить это для каждого потока, который создает пролог?
1 ответ
Я нашел ответ благодаря помощи создателя пролога: xflywind.
Ответ: пролог-события . Когда пролог создает поток, он запускает список процессов, так называемых событий, которые регистрируются при запуске. Все, что вам нужно сделать, это определить событие, которое устанавливает уровень журнала и предоставляет обработчик.
proc setLoggingLevel() =
addHandler(newConsoleLogger())
logging.setLogFilter(lvlDebug)
let
event = initEvent(setLoggingLevel)
var
app = newApp(settings = settings, startup = @[event])