[英]log4j - how to programatically exclude some classes from logging
我正在為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,因此我從freemarker.beans和freemarker.cache之類的日志中獲取了無用的日志(對我而言)。 如何過濾這些類以免登錄到上面的Socket Appender?
我嘗試使用過濾器,但它似乎不起作用。 如果有人可以指出正確的方向,那將非常有幫助。 干杯!
好吧..我找到了答案..我錯誤地實現了Filter類。 而不是DENY,我發出了NEUTRAL。 下面的代碼現在對我來說很好用,
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是一個Set,其中包含要忽略的類。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.