在日志条目中表示持续时间的最佳方式

本文关键字:持续时间 最佳 方式 表示 日志 | 更新日期: 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