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

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

最佳答案

TL;DR:是的,XCGLogger 是线程安全的,但它使用 println() 本身就是线程安全的,所以 println() 的其他调用者可以让它看起来好像 XCGLogger 本身不是。
XCGLogger 使用一个队列来确保它调用的所有 println() 都以线程安全的方式被调用和完成。

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

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

关于ios - XCGLogger 线程安全吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29700264/

10-10 04:23