我發現使用java.util.logging.Filter
,只檢查,如果logger的名稱與org.primefaces
開始過濾器的解決方案:
對於這個解決方案,就必須設置SLF4JBridgeHandler和篩選程序, 與設置它logging.properties文件不會工作。
此外,還有一個人自己創建了SLF4JBridgeHandler,因爲SLF4JBridgeHandler並不尊重過濾器,所以它是一個Bug。
SLF4JBridgeHandler slf4jBridgeHandler = new SLF4JBridgeHandler(){
@Override
public void publish(LogRecord record) {
if (getFilter() != null && !getFilter().isLoggable(record)) {
return;
}
super.publish(record);
}
};
Filter filter = new Filter() {
@Override
public boolean isLoggable(LogRecord record) {
String loggerName = record.getLoggerName();
boolean loggable = loggerName != null && (loggerName.startsWith("org.primefaces"));
return loggable;
}
};
slf4jBridgeHandler.setFilter(filter);
java.util.logging.LogManager.getLogManager().getLogger("").addHandler(slf4jBridgeHandler);
不要調用SLF4JBridgeHandler.removeHandlersForRootLogger()
,因爲這會刪除由Websphere設置的每個其他處理程序!