在日志条目中表示持续时间的最佳方式
本文关键字:持续时间 最佳 方式 表示 日志 | 更新日期: 2023-09-27 18:24:58
我正在编写一个简单的通用记录器类,它知道正在记录的任务的开始和结束时间。
在英语中,你更希望如何用不同的时间数字来表示任务完成所需的时间?
我目前有,
Log("Finished in {0}ms, {1}s, {2}m.", ts.TotalMilliseconds, ts.TotalSeconds, ts.TotalMinutes);
哪个输出,
2012-02-16@20:12:33:完成时间:2007.8125ms,2.0078125s,0.03346351416666667m。
你有什么更好的建议吗?
干杯,P.
感谢Xeno,最终代码是:
Log(string.Concat("Finished in ", (ts.Hours > 0 ? ts.Hours + "h " : string.Empty),
(ts.Minutes > 0 ? ts.Minutes + "m " : string.Empty),
(ts.Seconds > 0 ? ts.Seconds + "s " : string.Empty),
(ts.Milliseconds > 0 ? ts.Milliseconds + "ms " : string.Empty),
("(" + ts.TotalMilliseconds.ToString("0.000") + ")")));
怎么样:
0h 0m 2s 7.815ms
由于它是一个通用记录器,这是的通用建议
最好的方法是给用户一种在配置文件中定义它的方法,或者至少在初始化时以编程方式定义
我个人喜欢使用一些标准。因为它们是标准的,以后很容易解析。
例如,HTTP/1.1日期/时间格式,它产生以下任何格式。
Sun, 06 Nov 1994 08:49:37 GMT ; RFC 822, updated by RFC 1123
Sunday, 06-Nov-94 08:49:37 GMT ; RFC 850, obsoleted by RFC 1036
Sun Nov 6 08:49:37 1994 ; ANSI C's asctime() format
除此之外,最好存储Unix时间戳。它总是派上用场。
最后,以毫秒为单位设置持续时间。如果你有毫秒,你可以把它转换成任何其他更高的单位。但是,如果你想让其他人阅读,请用HH:MM:SS.fff
或类似的格式。这种格式更容易理解。
您也可以简单地将开始和结束时间记录到最高精度,这可能是最灵活或最准确的表示。
这一切都取决于上下文。如果您的进程通常运行几分钟,那么毫秒是无关紧要的。如果你有一些在几秒钟内运行的东西,那么毫秒可能是相关的。如果低于1秒,肯定是毫秒或微米。
如果它在毫秒和小时之间变化,那么我会坚持使用一致但熟悉的表示法:
HH:mm:ss.fff