java - Log4j Windows 事件查看器日志记录

标签 java logging log4j

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

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);

我正在使用 Apache log4j 1.2.12

最佳答案

是的,请记住,如果事件符合其条件,则 Logger 会拾取事件,然后将其写入记录器的关联 Appender

因此,将记录器设置为要从应用程序捕获的最低级别 (DEBUG),将 NT 附加程序设置为较高级别 (INFO),然后将控制台设置为文件追加器到较低级别(DEBUG)

关于java - Log4j Windows 事件查看器日志记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12979678/

相关文章:

docker - 无法从 docker-compose logs -f [container name] 退出

java - Netbeans 记录器

ios - Testflight SDK 和 iOS 模拟器 - 如何使用?

maven - Grails:为什么在编译期间执行 Config.groovy 文件?

java - 如何通过java启用或禁用jsp页面中的链接

Java/Grails - PrettyTime NLP 可以拆分非日期部分吗?

java - 搜索图标操作按钮未显示在操作栏中 - 无法访问搜索功能

java - 去掉点后无用的零

java - 有没有办法在 log4j 模式中指定当前行号

java - Log4j输出完整的类名和包