log4j-如何用程序将某些类从日志中排除



我正在为Log4J编写一个自定义的套接字附加程序,它在运行时连接自己。到目前为止,我的代码如下,

Logger rootLogger = Logger.getRootLogger();
SocketAppender socketAppender = new SocketAppender(server, port);
socketAppender.setReconnectionDelay(60000);
socketAppender.setThreshold(Level.DEBUG);
socketAppender.setName("server-socket");
rootLogger.addAppender(socketAppender);

其中服务器&端口定义正确。我使用的是Struts2,所以我从freemarkr.beans和freemarkr.cache等类中得到了一个无用日志的日志。我如何从登录到上面的Socket Appender中筛选这些类?

我试过使用过滤器,但似乎不起作用。如果有人能为我指明正确的方向,那将是非常有帮助的。干杯

嗯。。我找到了答案。。我错误地实现了Filter类。我派出的不是丹尼,而是空档。下面的代码现在对我来说很好,

        SocketAppender socketAppender = new SocketAppender(server, port);
        socketAppender.setReconnectionDelay(60000);
        socketAppender.setThreshold(Level.DEBUG);
        socketAppender.setName("server-socket");
        socketAppender.addFilter(new Filter() {
            @Override
            public int decide(LoggingEvent loggingEvent)
            {
                if(ignoreLogsFromClasses.contains(loggingEvent.categoryName))
                {
                    return -1;
                }
                return 0;
            }
        });
        rootLogger.addAppender(socketAppender);

其中ignoreLogsFromClasses是包含要忽略的类的集合。

最新更新