繁体   English   中英

os_log:Console.app 和“日志流”中整数的意外值

[英]os_log: Unexpected value for integer in Console.app and in `log stream`

代码(斯威夫特 3):

os_log("State changed: from %d to %d", 1, 2)

Xcode 8 (调试区域控制台):

2016-10-01 00:38:55.903298 AUHost[82455:1512026] State changed: from 1 to 2

终端(日志流):

2016-10-01 00:38:54.880763+0200 0x17125a Default 0x8000000000022d5e 82455 AUHost: State changed: from 1 to 1718550530

控制台应用程序

State changed: from 1 to 1718550530

为什么Console.app和命令日志流显示意外值1718550530而不是2

谢谢!


更新

使用偶数个参数时观察到的意外行为:

os_log("View loaded: %d", 1)
os_log("View loaded: %d => %d", 1, 2)
os_log("View loaded: %d => %d => %d", 1, 2, 3)
os_log("View loaded: %d => %d => %d => %d", 1, 2, 3, 4)
os_log("View loaded: %d => %d => %d => %d => %d", 1, 2, 3, 4, 5)

输出:

View loaded: 1
View loaded: 1 => 1718550530
View loaded: 1 => 2 => 3
View loaded: 1 => 2 => 3 => 1718550532
View loaded: 1 => 2 => 3 => 4 => 5

看起来像一个错误。 向苹果报告: https : //openradar.appspot.com/28574572

截至今天(2020 年 7 月 21 日),在 Swift 5.something 和 Xcode 11.6 中,我在 iOS 应用程序中使用 os_log 时仍然遇到此问题。

这不是一个完整的修复,但对我有效的解决方法是在os_log()调用之前将传入的Int转换为String (不要忘记将格式标记更改为%@ ):

let intA = 7
let intB = 4
os_log("State changed: from %@ to %@", String(intA), String(intB))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM