我正在为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是包含要忽略的类的集合。