当前位置: 首页 > 知识库问答 >
问题:

Java 日志级别 - 何时使用什么

程钧
2023-03-14

我应该何时使用低于日志级别?如果有任何例子,那将是伟大的。

  1. 跟踪与调试
  2. 警告 vs 错误 vs 致命

警告Vs错误VS致命

我是否需要首先在我的应用程序代码中使用FATAL?

迄今为止,在我参与的项目中,我从未在任何代码中看到致命的日志记录。

我读过,如果FATAL程序将结束。如果是这种情况,我想知道我的日志语句将如何执行。

此外,我认为在内存分配的情况下不能使用FATAL,因为JVM会抛出内存溢出异常并退出程序。因此开发人员无法记录任何内容。如果这是正确的,那么我将在哪里使用FATAL?

对于错误和警告:在catch块中,如果我没有备用逻辑(对于错误条件)来执行,那么我将使用错误级别记录异常,异常将转换为特定于用户的,并显示在屏幕上。

同时,当我们有异常逻辑的备用流/路径时,将使用警告。

对于调试,这将是验证抛出异常的内容和位置。什么是造成错误的数据。因此,这可以在代码的复杂逻辑之前和之后使用。

请让我知道我的理解是否正确

例:

class myLogLevel{
     void method1( int empId) 
    {
              log.trace("method1 starting") ;
           try{
               log.info("befor getting data from DB");
            log.debug("executing the value for emp id : " + empId );
                      //DBConnection and code here

          } catch (Exception1 e1) {
    log.warn("record not found. So assigning default value");
           // Code logic to assign default value
          }
          catch (Exception1 e1) {
             // Due to DB connection error. Connection nor established
log.error("DB connection not established");
          }
       log.trace("method1 ending") ;
        }
       }

共有1个答案

齐建白
2023-03-14

在我过去的经历中,一个有点常见的做法是

始终使用DEBUG进行调试。我很少看到人们使用TRACE。

对于对系统有害但不一定会导致问题的东西(例如,是否是错误取决于调用上下文),使用WARN例如,你可以写一个有时返回NaN的函数;但是对于调用方来说,NaN可能不是一个错误,这取决于您的上下文。

对于系统中某个地方或调用者输入数据中肯定是错误的东西;这肯定需要人工参与(即有人需要从您的生产支持团队中查看它),使用ERROR。例如,您想将一个人的记录写入数据库,但发现主键(firstname, lastname)为NULL。

对于会导致整个系统关闭或对系统造成严重影响的内容,请使用 FATAL。这意味着人们需要立即查看它。示例包括导致启动失败的问题;内存分配失败;消息传递处理系统无法初始化消息传递层;等。

希望以上有所帮助。

 类似资料:
  • 问题内容: 我正在开发一个需要使用记录器功能的应用程序。我已经了解了不同级别的记录器,这些记录器是: 严重(最高) 警告 信息 配置 精细 罚款 最好的 我无法理解每个日志记录级别的用法。 有人可以给我一个很好的例子,显示所有日志记录级别及其用法吗? 问题答案: 通常,您不需要所有这些级别,SEVERE,WARNING,INFO,FINE可能就足够了。我们正在使用Log4J(不是直接java.ut

  • 我的MBean部署在JBoss上。jboss日志记录级别设置为'info'。现在,当我将我的包的日志级别(java util logger)更改为“fine”(通过设置日志级别以编程方式运行时)时,它不会追加任何logger.fine(“....”)的消息。信息被过滤掉了。 是否有任何方法可以将java util记录器日志级别的更改传播到jboss日志级别?(java util有不同的级别->SE

  • 主要内容:如何设置日志级别?,日志级别如何工作?,Log4j 日志级别示例日志级别用于对日志文件中的信息进行分类。但是它们以非常具体的方式进行分类,即按紧急程度分类。该级别允许您管理以下类型的信息: 您可以在搜索过程中过滤您的日志文件。 您可以管理您记录的信息量。 系统中给出的信息量和类型以及事件日志由配置文件中的 log4j 日志级别设置控制。每条日志消息都以消息级别为前缀。 日志级别是org.apache.log4j.Level类的一个实例。 Log4j 具有以下级

  • 我不明白的第一个例子是,下面只打印“warning:root:hello from warn”。如果我理解正确的话,“logging.info”实际上调用根记录器,而根记录器默认为警告级别。所以第一个“Hello from Info”被忽略,这很好。但为什么第二个“你好从信息”也没有打印出来? 第二个问题是处理程序和记录器的日志级别。如果我们同时为处理程序和记录器设置日志级别,那么哪一个是有效的?

  • 在我的Java应用程序中,我使用SLF4J+Logback进行日志记录。我在开发环境中使用调试级日志记录,在生产环境中使用错误级日志记录。但是有一些消息我无论如何都想要记录下来,无论日志级别如何(类似于,但使用的是logger)。 有什么切实可行的方法可以实现这一点吗?我可以使用error或更低的级别,但我想做的是给出一些信息,所以在语义上是错误的,它不是错误。 我可以在我的中为我的类定义另一个记

  • 我有log4j2.xml,它部分配置为: 但是,跟踪消息并不存在于两个文件附加符(fileinfo/filedebug)中。当我更改FileDebug log level=“TRACE”时,就会出现跟踪消息。