我正在考虑使用XCGLogger
来替换CocoaLumberjack,并且想知道是否允许使用根据自述文件在主线程上创建和设置的全局记录器从任何线程记录以下内容?
log.info("This is not a valid format: \(inputStr)")
答案 0 :(得分:7)
TL; DR:是的,XCGLogger
是线程安全的,但它使用println()
本身就是线程安全的,因此println()
的其他呼叫者可以使其看起来像{{1}本身不是。
XCGLogger
使用队列来确保以线程安全的方式调用并完成所有XCGLogger
调用。
但请注意,如果您直接从应用中的其他位置或其他图书馆拨打println()
,则这些来电不是线程安全的,仍可能会干扰来自println()
的来电。
项目中有一个单元测试(XCGLogger
),显示通过并发队列多次调用testMultiThreaded
并且它们都安全地写入。但是您可以看到Xcode本身在测试时输出有关测试的信息,并且输出可能会与日志输出纠缠在一起。