作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在考虑使用 XCGLogger
来替换 CocoaLumberjack,并且想知道是否允许使用根据自述文件在主线程上创建和设置的全局记录器从任何线程记录以下内容?
log.info("This is not a valid format: \(inputStr)")
最佳答案
TL;DR:是的,XCGLogger
是线程安全的,但它使用 println()
本身是线程安全的,因此 println() 的其他调用者
可以让它看起来好像 XCGLogger
本身不是。
XCGLogger
使用队列来确保它调用的所有 println()
都以线程安全的方式被调用和完成。
但是请注意,如果您直接从应用程序的其他地方或其他库调用 println()
,这些调用不是线程安全的,并且仍可能干扰来自 XCGLogger< 的调用
.
项目中有一个单元测试 (testMultiThreaded
),显示通过并发队列对 XCGLogger
的多次调用,它们都安全地写入。但是您可以看到,Xcode 本身会在测试运行时输出有关测试的信息,并且该输出可能会与日志输出纠缠在一起。
关于ios - XCGLogger 线程安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29700264/
我是一名优秀的程序员,十分优秀!