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