logger.info和logger.debug之间的区别

时间:2010-02-26 14:33:40

标签: java logging log4j

logger.debuglogger.info之间的区别是什么?

何时会打印logger.debug

8 个答案:

答案 0 :(得分:111)

我建议您查看名为"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");

答案 1 :(得分:22)

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

如果您认为使用哪一个,那么可以归结为思考您希望在哪个级别上看到的内容。对于其他级别,例如在Log4J中,请查看API http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/Level.html

答案 2 :(得分:9)

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

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

答案 3 :(得分:7)

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

具有不同优先级的关键是允许您以合理细粒度的方式上调/下调特定组件的详细程度 - 并且只需要更改日志记录配置(而不是代码)以查看差。

答案 4 :(得分:2)

  1. INFO用于记录程序正常运行的信息。
  2. DEBUG用于查找原因,以防您的程序无法按预期运行或发生异常。这符合开发人员的利益。

答案 5 :(得分:0)

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

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

何时打印logger.debug?

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

答案 6 :(得分:0)

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

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

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

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

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

答案 7 :(得分:0)

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

每个级别对应/映射到一种类型的用户:

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