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