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

时间:2014-08-12 03:18:24

标签: java logging log4j log4

我什么时候应该使用低于日志级别?如果有任何例子会很棒。

  1. Trace Vs Debug
  2. 警告错误与致命
  3. WARN VS ERROR与致命

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

    到目前为止,我还没有看到任何代码中的FATAL日志记录仍然存在于我正在进行的项目中。

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

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

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

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

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

    如果我的理解是正确的,请告诉我

    示例:

    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 个答案:

答案 0 :(得分:1)

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

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

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

对于在系统或调用者输入数据中某处肯定是错误的东西;肯定需要人工参与(即有人需要从您的生产支持团队查看),使用ERROR。例如。你想把一个人的记录写入数据库,但发现主键(名字,姓氏)是NULL。

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

希望以上有所帮助。