下面列出了java.util.logging.Handler# setFilter ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
private static void suppressUselessLogging() {
for (Handler handler : Logger.getLogger("").getHandlers()) {
handler.setFilter(new Filter() {
@Override
public boolean isLoggable(LogRecord record) {
boolean result = true;
if (record.getSourceClassName().startsWith("org.netbeans.modules.parsing.impl.indexing.LogContext")
|| record.getSourceClassName().startsWith("org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater")
|| record.getSourceClassName().startsWith("org.netbeans.modules.editor.settings.storage.keybindings.KeyMapsStorage")
|| record.getSourceClassName().startsWith("org.netbeans.modules.settings.RecognizeInstanceObjects$OverObjects")) { //NOI18N
result = false;
}
return result;
}
});
}
}
private static void suppressUselessLogging() {
for (Handler handler : Logger.getLogger("").getHandlers()) {
handler.setFilter(new Filter() {
@Override
public boolean isLoggable(LogRecord record) {
boolean result = true;
if (record.getSourceClassName().startsWith("org.netbeans.modules.parsing.impl.indexing.LogContext")
|| record.getSourceClassName().startsWith("org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater")
|| record.getSourceClassName().startsWith("org.netbeans.modules.editor.settings.storage.keybindings.KeyMapsStorage")) { //NOI18N
result = false;
}
return result;
}
});
}
}
private static void suppressUselessLogging() {
for (Handler handler : Logger.getLogger("").getHandlers()) {
handler.setFilter(new Filter() {
@Override
public boolean isLoggable(LogRecord record) {
boolean result = true;
if (record.getSourceClassName().startsWith("org.netbeans.modules.parsing.impl.indexing.LogContext")
|| record.getSourceClassName().startsWith("org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater")
|| record.getSourceClassName().startsWith("org.netbeans.modules.editor.settings.storage.keybindings.KeyMapsStorage")) { //NOI18N
result = false;
}
return result;
}
});
}
}
private static void suppressUselessLogging() {
for (Handler handler : Logger.getLogger("").getHandlers()) {
handler.setFilter(new Filter() {
@Override
public boolean isLoggable(LogRecord record) {
boolean result = true;
if (record.getSourceClassName().startsWith("org.netbeans.modules.parsing.impl.indexing.LogContext")
|| record.getSourceClassName().startsWith("org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater")
|| record.getSourceClassName().startsWith("org.netbeans.modules.editor.settings.storage.keybindings.KeyMapsStorage")) { //NOI18N
result = false;
}
return result;
}
});
}
}
private void setLogLevel(Level logLevel) {
Logger rootLogger = LogManager.getLogManager().getLogger("");
int oldLevel = rootLogger.getLevel().intValue();
int newLevel = logLevel.intValue();
rootLogger.setLevel(logLevel);
for (Handler h : rootLogger.getHandlers()) {
h.setFilter(record -> {
int lv = record.getLevel().intValue();
if (lv > oldLevel) {
return true;
}
String ln = record.getLoggerName();
return ln != null && ln.startsWith("kalang.compiler") && lv > newLevel;
});
h.setLevel(logLevel);
}
}
/**
* Disable logging of logging messages from DatabaseUILogger. See #215375.
*
* Usefulness of the whole logger seems to be doubtful
*/
public static void suppressSuperfluousLogging() {
for (Handler h : Logger.getLogger("").getHandlers()) {
h.setFilter(new Filter() {
@Override
public boolean isLoggable(LogRecord lr) {
if (lr.getSourceClassName().equals("org.netbeans.modules.db.explorer.DatabaseUILogger")
|| lr.getSourceClassName().startsWith("org.netbeans.modules.settings.RecognizeInstanceObjects")) {
return false;
} else if (lr.getSourceClassName().equals(
"org.netbeans.api.db.sql.support.SQLIdentifiers$DatabaseMetaDataQuoter")) {
if (lr.getSourceMethodName().equals("getExtraNameChars")
&& lr.getLevel() == Level.WARNING
&& lr.getMessage().startsWith(
"DatabaseMetaData.getExtraNameCharacters() failed")) {
return false;
} else if (lr.getSourceMethodName().equals("needToQuote")
&& lr.getLevel().intValue()
<= Level.INFO.intValue()) {
return false;
} else {
return true;
}
} else if (lr.getSourceClassName().equals(
"org.netbeans.modules.db.explorer.DatabaseConnection") &&
lr.getSourceMethodName().equals("doConnect")) {
return false;
} else {
return true;
}
}
});
}
}
/**
* Disable logging of logging messages from DatabaseMetaDataQuoter.
*
* This method is a workaround of problems in the database modules and can
* be removed, when the problem is really fixed.
*
*/
public static void suppressSuperfluousLogging() {
// TODO: Remove this code and fix the core problem
for (Handler h : Logger.getLogger("").getHandlers()) {
h.setFilter(new Filter() {
@Override
public boolean isLoggable(LogRecord lr) {
if (lr.getSourceClassName().equals(
"org.netbeans.api.db.sql.support.SQLIdentifiers$DatabaseMetaDataQuoter")) {
if (lr.getSourceMethodName().equals("getExtraNameChars")
&& lr.getLevel() == Level.WARNING
&& lr.getMessage().startsWith(
"DatabaseMetaData.getExtraNameCharacters() failed")) {
return false;
} else if (lr.getSourceMethodName().equals("needToQuote")
&& lr.getLevel().intValue() <= Level.INFO.intValue()) {
return false;
} else {
return true;
}
} else {
return true;
}
}
});
}
}
public static void main(String[] args) {
try {
LogManager.getLogManager().readConfiguration(new FileInputStream("mylogging.properties"));
} catch (SecurityException | IOException e1) {
e1.printStackTrace();
}
logger.setLevel(Level.FINE);
logger.addHandler(new ConsoleHandler());
//adding custom handler
logger.addHandler(new MyHandler());
try {
//FileHandler file name with max size and number of log files limit
Handler fileHandler = new FileHandler("/Users/pankaj/tmp/logger.log", 2000, 5);
fileHandler.setFormatter(new MyFormatter());
//setting custom filter for FileHandler
fileHandler.setFilter(new MyFilter());
logger.addHandler(fileHandler);
for(int i=0; i<1000; i++){
//logging messages
logger.log(Level.INFO, "Msg"+i);
}
logger.log(Level.CONFIG, "Config data");
} catch (SecurityException | IOException e) {
e.printStackTrace();
}
}