【问题标题】:Difference between logger.info and logger.debuglogger.info 和 logger.debug 之间的区别
【发布时间】:2011-01-21 11:40:36
【问题描述】:

logger.debuglogger.info 有什么区别?

logger.debug 何时打印?

【问题讨论】:

  • 1):信息消息是我们希望看到的,即使应用程序处于*最佳状态。 2):调试消息通常是我们在*调试某些问题时希望看到的。

标签: java logging log4j


【解决方案1】:

我建议你看看名为"Short Introduction to log4j" 的文章。它包含对日志级别的简短说明,并演示了如何在实践中使用它们。日志级别的基本思想是您希望能够根据情况配置日志包含多少详细信息。例如,如果您尝试解决问题,您会希望日志非常详细。在生产环境中,您可能只想看到警告和错误。

系统每个组件的日志级别通常通过配置文件中的参数控制,因此很容易更改。您的代码将包含具有不同级别的各种日志记录语句。回复Exception 时,您可以致电Logger.error。如果您想在任何给定点打印变量的值,您可以调用Logger.debug。程序中可配置的日志记录级别和日志记录语句的组合允许您完全控制应用程序将如何记录其活动。

至少在 log4j 的情况下,日志级别的顺序是:

DEBUG < INFO < WARN < ERROR < FATAL

这是该文章中的一个简短示例,演示了日志级别的工作原理。

   // get a logger instance named "com.foo"
   Logger logger = Logger.getLogger("com.foo");

   // Now set its level. Normally you do not need to set the
   // level of a logger programmatically. This is usually done
   // in configuration files.
   logger.setLevel(Level.INFO);

   Logger barlogger = Logger.getLogger("com.foo.Bar");

   // This request is enabled, because WARN >= INFO.
   logger.warn("Low fuel level.");

   // This request is disabled, because DEBUG < INFO.
   logger.debug("Starting search for nearest gas station.");

   // The logger instance barlogger, named "com.foo.Bar",
   // will inherit its level from the logger named
   // "com.foo" Thus, the following request is enabled
   // because INFO >= INFO.
   barlogger.info("Located nearest gas station.");

   // This request is disabled, because DEBUG < INFO.
   barlogger.debug("Exiting gas station search");

【讨论】:

  • @momomo 您可能想查看this 的答案以了解Trace 的日志级别。
  • 您的示例If you want to print the value of a variable at any given point, you might call Logger.debug 帮助我澄清了DebugTrace 级别之间的混淆。谢谢!
【解决方案2】:

这将取决于日志记录配置。默认值取决于所使用的框架。这个想法是,稍后通过将配置设置从 INFO 更改为 DEBUG,您将看到打印出更多(或更少,如果相反的话)行,而无需重新编译整个应用程序。

如果您认为要使用哪一个,那么归根结底就是考虑您想在哪个级别看到什么。对于其他级别,例如在 Log4J 中查看 API,http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/Level.html

【讨论】:

    【解决方案3】:

    只是对所有可能级别的集合的澄清,即:

    ALL < TRACE < DEBUG < INFO < WARN < ERROR < FATAL < OFF
    

    【讨论】:

      【解决方案4】:

      基本上,这取决于您的记录器的配置方式。通常,您会在开发期间写出调试输出但在生产中关闭 - 或者可能在调试特定区域时写出选定的调试类别。

      具有不同优先级的目的是允许您以合理的细粒度方式调高/调低特定组件的详细程度 - 并且只需要更改日志配置(而不是代码)即可查看区别。

      【讨论】:

        【解决方案5】:
        1. INFO 用于记录您的程序按预期运行的信息。
        2. DEBUG 用于查找程序未按预期运行或发生异常的原因。这符合开发者的利益。

        【讨论】:

          【解决方案6】:

          这是一个非常古老的问题,但我在这里看不到我的理解,所以我将添加我的 2 美分:

          每个级别都对应/映射到一种用户:

          • 调试:开发人员 - 手动调试
          • trace:自动记录和步骤跟踪器 - 用于第 3 级支持
          • 信息:技术人员/支持级别 1 /2
          • 警告:技术人员/用户错误:自动警报/支持级别 1
          • 严重/致命:取决于您的设置 - 本地 IT

          【讨论】:

            【解决方案7】:

            这取决于您在 log4j 配置文件中选择的级别。

            <Loggers>
                    <Root level="info">
                    ...
            

            如果您的级别是“信息”(默认),logger.debug(...) 将不会在您的控制台中打印。 但是,如果您的关卡是“调试”,它会。

            根据代码的关键级别,您应该使用以下级别中最准确的级别:

            ALL < TRACE < DEBUG < INFO < WARN < ERROR < FATAL < OFF
            

            【讨论】:

              【解决方案8】:

              logger.debug 和 logger.info 有什么区别?

              这些只是一些已经定义的默认级别。如果您愿意,您可以定义自己的级别。 这些级别的目的是启用/禁用其中的一个或多个,而无需对您的代码进行任何更改。

              logger.debug 什么时候打印??

              当您在配置中启用调试或任何更高级别时。

              【讨论】:

                【解决方案9】:

                如果应用程序处于最佳状态,我们希望即使看到信息消息。

                调试消息通常是我们希望在调试一些问题时看到的。

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 1970-01-01
                  • 2021-12-25
                  • 2020-05-10
                  • 2014-09-20
                  • 2010-10-28
                  • 2015-10-04
                  • 2012-08-12
                  相关资源
                  最近更新 更多