4

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

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

1 回答 1

8

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

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

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

testMultiThreaded项目中有一个单元测试XCGLogger(但是您可以看到 Xcode 本身会在测试运行时输出有关测试的信息,并且该输出可能与日志输出纠缠在一起。

于 2015-04-17T19:53:01.797 回答