【问题标题】:Time stamp on log entries日志条目的时间戳
【发布时间】:2016-11-06 03:20:41
【问题描述】:

我试图找出在我的 Java Web 应用程序中执行某些方法所花费的时间。我有一些使用 log4j 的日志条目。现在,我可以依靠日志条目上的时间戳来获得我的代码的每个部分执行的大致时间吗?目前,我没有将探查器附加到我的 JVM 的灵活性。

【问题讨论】:

  • 我真的不明白你的问题。当然,您可以使用计算器并根据日志条目的时间戳手动计算增量。但我们无法告诉您从此类活动中获得的解决方案是否足以满足您的需求。您是决定这些数字是否足以满足您的用例的人。
  • stackoverflow.com/questions/358225/…,您可以在任何地方记录 System.CurrentMilliseconds() ..
  • 提示您问题的第二部分:如果您需要此类信息,并且无法附加分析器;那么除了让你的代码写出很多时间戳之外别无他法。
  • 我通常在像你这样的场景中使用番石榴秒表并使用 log4j 来记录它,但是如果没有分析器,你最终可能会得到很大的日志
  • @Jägermeister 我在这里担心的是 log4j 中的日志是从同一个线程打印出来的,还是会使用不同的线程写入文件。

标签: java log4j


【解决方案1】:

您可以解析日志的日期并保持其可读性!。

示例日志

2014-07-02 20:52:39.345 DEBUG className:200 - This is debug message
2014-07-02 20:52:39.366 DEBUG className:201 - This is debug message2

转换日期 sn-p:

public static void main(String[] args) throws Exception {
    String logdate = "2014-07-02 20:52:39.345";
    DateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss.SSS");

    System.out.println(df.parse(logdate));
}

输出 (Date::toString!!!)

Wed Jul 02 20:52:39 CEST 2014

【讨论】:

  • 不确定在多线程和大量“交错”消息时效果如何。
  • @Jägermeister 与以毫秒为单位转换日志日期完全相同...
【解决方案2】:

您可以在 log4j 配置文件中提供特定的模式布局。查看link,了解有关您可以在 log4j 日志文本中包含的不同内容的详细信息。

如果您想了解一段代码执行所花费的时间,您可以尝试在该段代码之前和之后放置日志语句,并手动查找时间差以了解相同的内容。

这不是常规方式,我建议您也尝试找出无法附加分析器的原因。

【讨论】:

    猜你喜欢
    • 2017-04-07
    • 2010-09-26
    • 2018-08-14
    • 2019-03-27
    • 1970-01-01
    • 1970-01-01
    • 2019-10-05
    • 2012-09-10
    • 2018-07-15
    相关资源
    最近更新 更多