XCGLogger 线程安全吗?

Is XCGLogger thread safe?

我正在考虑使用 XCGLogger 来替换 CocoaLumberjack,并且想知道是否允许使用根据自述文件在主线程上创建和设置的全局记录器从任何线程记录以下内容?

log.info("This is not a valid format: \(inputStr)")

TL;DR:是的,XCGLogger 是线程安全的,但它使用 println() 本身是线程安全的,因此 println() 的其他调用者可以使它看起来好像 XCGLogger 本身不是。

XCGLogger 使用队列来确保它调用的所有 println() 都以线程安全的方式被调用和完成。

但是请注意,如果您直接从应用程序的其他地方或其他库调用 println(),则这些调用不是线程安全的,仍然可能会干扰来自 XCGLogger 的调用。

项目 (testMultiThreaded) 中有一个单元测试显示通过并发队列多次调用 XCGLogger 并且它们都安全地写入。但是您可以看到 Xcode 本身会输出有关测试的信息,因为它们是 运行 并且该输出可能会与日志输出纠缠在一起。