Prologue -Webframework - 如何在使用 `--threads:on` 标志编译时设置用于日志记录的线程局部变量?

Prologue -Webframework - How to set thread-local variables for logging when compiling with `--threads:on` flag?

我正在使用网络框架序言和 ORM 规范在 nim 中编写网络应用程序。我发现当您使用 --threads:on 标志进行编译时,启动应用程序时通常出现在终端中的序言和规范的日志消息消失了。

这是因为日志消息处理程序和日志级别设置为线程局部变量,所以当创建新线程时,必须再次为该线程设置日志级别等。

但是,prologue 是实例化线程的那个,那么如何为 prologue 创建的每个线程正确设置它?

感谢prologue作者xflywind的帮助,我找到了答案。

答案是prologue-events。 当 prologue 创建一个线程时,它会触发一个在启动时注册的过程列表,即所谓的事件。您需要做的就是定义一个设置 log-level 并提供处理程序的事件。

proc setLoggingLevel() =
  addHandler(newConsoleLogger())
  logging.setLogFilter(lvlDebug)

let 
  event = initEvent(setLoggingLevel)

var
  app = newApp(settings = settings, startup = @[event])