【问题标题】:How can I format the date as epoch timestamp in logback?如何在 logback 中将日期格式化为纪元时间戳?
【发布时间】:2019-02-24 19:43:55
【问题描述】:

我正在使用 logback,我想打印一个纪元时间戳而不是日期和时间。

https://logback.qos.ch/manual/layouts.html#contextName 引用 https://docs.oracle.com/javase/8/docs/api/java/text/SimpleDateFormat.html 无法将日期格式化为纪元。

我不敢相信这个基本功能不可用,但我用谷歌搜索了一段时间并找不到它。

我发现 log4j log4j : current time in milliseconds 的问题相同,但 @thegeko 建议 %d{UNIX_MILLIS} 在 logback 中对我不起作用。

有人知道吗?

【问题讨论】:

  • “纪元时间戳”对您意味着什么?您是否正在从 1970-01-01T00:00:00Z 的纪元参考中寻找毫秒数?还是来自another epoch 的另一个粒度?
  • 为什么期望纪元的计数可用于记录?这些值是人类无法读取的。
  • @BasilBourque en.wikipedia.org/wiki/Unix_time - 在中心位置收集日志时,epoch 比人类可读格式更有意义。无论服务器位于何处,它都是 UTC 格式并且始终准确,无需解析。然后由客户端读取日志,客户端通常将其转换为人类可读的格式,本地化为格式和时区。如果日志服务器以 ISO 8601 或类似的方式发出日志,那么这些日志需要经过多次解析或翻译才能到达客户端,这是对 CPU 的浪费。

标签: logback


【解决方案1】:

你可以使用这个 sn-p 来打印 Unix Epoch:

<layout class="net.logstash.logback.layout.LogstashLayout">
    <timeZone>UTC</timeZone>
    <timestampPattern>[UNIX_TIMESTAMP_AS_NUMBER]</timestampPattern>
</layout>

参考:https://github.com/logstash/logstash-logback-encoder#customizing-timestamp

【讨论】:

    猜你喜欢
    • 2014-01-25
    • 2021-08-26
    • 2015-01-23
    • 1970-01-01
    • 2018-08-03
    • 2018-08-02
    • 1970-01-01
    • 2019-03-04
    • 2012-12-17
    相关资源
    最近更新 更多