有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Log4j windows事件查看器日志记录

我希望允许用户指定他们希望写入Windows事件查看器的级别,但是我也将日志写入控制台和输出文件。是否有一种方法可以将所有日志写入文件和控制台,并且只将更高级别的日志写入事件查看器,而不必使用两个单独的记录器变量

private static PatternLayout myLayout 
  = new PatternLayout("%-4r [%t] %-5p %c %x - %m%n");
// Read from INI file
private static boolean enableWindowsEventLogging;
static final Logger log4jLogger = Logger.getLogger(Main.class); 
private static NTEventLogAppender eventLogAppender = new NTEventLogAppender();
private static RollingFileAppender rollingFileAppender;
private static ConsoleAppender consoleAppender = new ConsoleAppender(myLayout);
    ....
if(enableWindowsEventLogging)
{
    switch(Integer.valueOf(thisProperties.getProperty("warningLevel")))
{
    case 1: log4jLogger.setLevel(Level.ALL); break;
    case 2: log4jLogger.setLevel(Level.FATAL); break;
    case 3: log4jLogger.setLevel(Level.ERROR); break;
    case 4: log4jLogger.setLevel(Level.WARN); break;
    case 5: log4jLogger.setLevel(Level.INFO); break;
    case 6: log4jLogger.setLevel(Level.DEBUG); break;
};
// Event viewer logging
log4jLogger.addAppender(eventLogAppender);
}else
log4jLogger.setLevel(Level.OFF);
    ....
rollingFileAppender = new RollingFileAppender(myLayout,"\\logs\\log4joutput.log", true);

我使用的是ApacheLog4J1.2.12


共 (1) 个答案

  1. # 1 楼答案

    是的,记住事件由Logger拾取,如果它们符合其标准,然后写入记录器的关联Appenders

    因此,将记录器设置为希望从应用程序中捕获的最低级别(DEBUG),将NT appender设置为较高级别(INFO),将控制台和文件appender设置为较低级别(DEBUG