gpt4 book ai didi

ios - 苹果系统日志时间以毫秒为单位?

转载 作者:可可西里 更新时间:2023-11-01 04:01:48 25 4
gpt4 key购买 nike

NSLog() 使用毫秒分辨率的时间戳,但它是一种钝器,因为它的所有日志消息都处于警告级别。

Apple 系统日志是一个更细粒度的系统,有 8 个不同的级别。但是...它的时间戳只有 1 秒分辨率。我阅读了有关时间格式的手册页,但它们似乎都是第二个。

显然这个信息是可用的,至少对 NSLog 是这样。一秒钟内可以进行很多事情;有没有办法通过 ASL 获得更好的分辨率?

最佳答案

您可以将 ".#" 附加到 ASL(和 syslog)中的时间格式以指定精度。因此 "utc.3" 将格式化为带毫秒的 UTC 格式。您可以将其添加到 msg_fmttime_fmt 参数中。

时间格式精度似乎只记录在 syslogd(1) 中.我不确定为什么它没有到达 asl(3) .

例如,使用 asl_add_output_file 并在 time_fmt 中指定可能如下所示:

// setup, do once!
aslclient log = asl_open(NULL, NULL, 0);
asl_add_output_file(log, STDERR_FILENO,
"$Time $((Level)(str)) - $Message", // $Time here uses time_fmt arg on next line
ASL_TIME_FMT_UTC ".3", // time_fmt: append ".3" for milliseconds here
ASL_FILTER_MASK_UPTO(ASL_LEVEL_DEBUG), ASL_ENCODE_SAFE);

// example log
asl_log(log, NULL, ASL_LEVEL_INFO, "Hello");

// Note in the above ASL_TIME_FMT_UTC is #defined to "utc", so the we're
// using compile-time string concatenation of "utc" ".3" to "utc.3".
// Alternately you can just specify "utc.3" directly.

和输出:

2016-02-01 19:16:39.561Z Info - Hello

asl_add_output_filemsg_fmt 参数中指定可能如下所示:

// setup, do once!
aslclient log = asl_open(NULL, NULL, 0);
asl_add_output_file(log, STDERR_FILENO,
// in msg_fmt below, use ISO8601 + ".6" for microseconds
"$((Time)(ISO8601.6)) $((Level)(str)) - $Message",
ASL_TIME_FMT_UTC,
ASL_FILTER_MASK_UPTO(ASL_LEVEL_DEBUG), ASL_ENCODE_SAFE);

// example log
asl_log(log, NULL, ASL_LEVEL_INFO, "Hello");

和输出:

2016-02-01T14:16:39.562030-05 Info - Hello

(我要提醒的是,上面的代码片段只是为了演示在 ASL 中指定时间格式精度。实际使用应该可能涉及 dispatch_once 用于设置,使用串行调度队列进行日志记录.)

关于ios - 苹果系统日志时间以毫秒为单位?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25798331/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com