Пролог -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])
Другие вопросы по тегам