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


Answers:


28

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

如果您考虑使用哪个,则可以归结为想在哪个级别上查看的内容。对于Log4J中的其他级别,请查看API,http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/Level.html


121

我建议您看一下名为“ 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,您可能需要检查答案以了解什么是Trace日志级别。
RBT

您的示例If you want to print the value of a variable at any given point, you might call Logger.debug帮助我阐明了我DebugTrace水平之间的困惑。谢谢!
RBT

13

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

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

9

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

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


0

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

这些只是已经定义的一些默认级别。您可以根据需要定义自己的级别。这些级别的目的是启用/禁用其中的一个或多个,而无需更改代码。

何时logger.debug将被打印??

启用调试或配置中的任何更高级别后。


0

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

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

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

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

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

0

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

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

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

0
  1. INFO用于记录程序正在按预期运行的信息。
  2. 如果您的程序无法按预期运行或发生异常,则使用DEBUG查找原因。这符合开发人员的利益。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.