我正在考虑XCGLogger
用来替换CocoaLumberjack,并且想知道是否允许使用自述文件在主线程上创建和设置的全局记录器从任何线程记录以下内容?
log.info("This is not a valid format: \(inputStr)")
TL; DR:是的,它XCGLogger
是线程安全的,但是它使用println()
线程安全的本身,因此其他调用者println()
可以使其看起来好像XCGLogger
本身不是线程安全的。
XCGLogger
使用队列来确保println()
以线程安全的方式调用和完成所有调用。
但是请注意,如果您println()
直接从应用程序中的其他地方调用,或从另一个库中调用,则这些调用不是线程安全的,并且仍然可能干扰来自的调用XCGLogger
。
项目(testMultiThreaded
)中有一个单元测试,该单元测试显示了XCGLogger
通过并发队列进行的多个调用,并且所有调用均安全地进行了写入。但是您可以看到Xcode本身在运行测试时会输出有关测试的信息,并且该输出可能与日志输出纠缠在一起。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句