日志框架中的重要但非致命的日志消息(log4j,log4net,log4php,log4cxx,NLog)

时间:2013-01-18 10:19:29

标签: log4j log4net nlog log4cxx log4php

在某些应用程序中,无论当前日志级别设置如何,都始终需要记录重要消息(例如应用程序启动和关闭)。使用log4jlog4net等框架记录确保重要消息的唯一方法是将消息的日志级别设置为FATAL

有没有更好的方法来执行此操作,因为当应用程序启动正常而没有错误时,FATAL似乎是一个误导性的类别?

2 个答案:

答案 0 :(得分:2)

对于log4j(以及类似于log4cxx),您可以执行以下操作:

public class Always {
  private static Logger logger = Logger.getLogger("logAlways");

  public static void log(String message) {
      logger.info(message);
  }
}

然后配置logAlways记录器以记录INFO以上的所有内容:

log4j.logger.logAlways=INFO

这也可以通过API配置,以避免某人(联合国)故意更改配置文件:

public class Always {
  private static Logger logger = null;

  static {
     logger = Logger.getLogger("logAlways");
     logger.setLevel(Level.INFO);
  }

  public static void log(String message) {
      logger.info(message);
  }
}

然后使用

Always.log("Starting up");

答案 1 :(得分:0)

不,将消息记录设置为最高可用日志记录级别只是为了确保始终记录它们是错误的方法。

首先,定义您想要的内容。例如,为什么记录应用程序的启动和停止很重要?

请注意,有多种日志记录。在调查出现问题时,通常的日志记录对开发人员来说是一种帮助。这是调试日志记录,它通常是可选的,因为如果应用程序正常工作,它对于日志记录部分并不重要。如果可用,可以通过不同的方式进行调试。

另一种日志记录是审计日志记录。如果用户登录或注销,更改密码或执行其他任何有意义的操作,可能需要记录日志,以便能够验证每个操作是否已正确启动和完成。

任何Log4X框架都应该能够支持两种日志记录要求,但不同之处在于您应该以不同方式配置它们。审计日志记录不允许将任何消息发送到日志记录附加程序,但很可能附加程序与调试日志记录不同。利用您将拥有多个记录器并可以以不同方式配置它们的事实。