Я кодирую на GlassFish Server Open Source Edition 3.1.2.2 (сборка 5) с Netbeans7.3. Я использую java.util.Logging и изменил формат ведения журнала консоли - без изменений в журналах из стекловолокна. Когда я устанавливаю уровень корневого регистратора на Level.ALL, а затем точно настраиваю уровень на основе пакета или класса, я застрял в большом количестве сообщений, которые отправляются различными методами getJNDIName из com.sun.enterprise.container. common.impl.ComponentEnvManagerImpl.Glassfish logs to null Logger - как установить уровень журнала?
Проблема в том, что они, кажется, отправляются на нулевой регистратор, что, очевидно, я не могу получить, чтобы установить его на более тихий уровень.
Я пытался получить доступ к Logger используется не пустая строка, «нуль», но это не будет делать либо :)
Это мой customFormatter:
public class CustomFormatter extends Formatter {
@Override
public String format(LogRecord record) {
StringBuilder sb = new StringBuilder();
sb.append(record.getLevel());
sb.append(":");
sb.append(record.getLoggerName());
sb.append("\t[");
sb.append(record.getSourceMethodName());
sb.append(" @ ");
sb.append(record.getSourceClassName());
sb.append("] ");
sb.append(new Date(record.getMillis()).toString());
sb.append("\n\t\t ");
sb.append(formatMessage(record));
sb.append("\n");
return sb.toString();
}
настроить его таким образом, , внутри @Startup @Singleton EJB:
protected static void configureLogger() {
try {
Logger.getLogger(StartUpSingleton.class.getName()).log(Level.INFO, "Preparing to configure Logger");
Handler hh[] = Logger.getLogger("").getHandlers();
Logger.getLogger(StartUpSingleton.class.getCanonicalName()).log(Level.INFO, "There are {0} available handlers", hh.length);
for (Handler hf : hh) {
Logger.getLogger(StartUpSingleton.class.getName()).log(Level.INFO, "Handler found : {0}", hf.toString());
if (java.util.logging.ConsoleHandler.class.isInstance(hf)) {
hf.setFormatter(new CustomFormatter());
CustomLogLevel.configure(hf);
}
}
Logger.getLogger(StartUpSingleton.class.getName()).log(Level.INFO, "Done with configure Logger");
} catch (SecurityException ex) {
Logger.getLogger(StartUpSingleton.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
Используя следующий объект конфигурации, где я поставил все детали уровней, которые я хочу:
class CustomLogLevel {
static void configure(Handler hf) {
hf.setLevel(Level.ALL);
Logger.getLogger("").setLevel(Level.ALL);
// Logger.getLogger(null).setLevel(Level.INFO) is impossible !
Logger.getLogger("null").setLevel(Level.INFO); // I tried ... ;-)
Logger.getLogger("com.sun").setLevel(Level.INFO);
Logger.getLogger("org").setLevel(Level.INFO);
Logger.getLogger("grizzly").setLevel(Level.INFO);
Logger.getLogger("global").setLevel(Level.INFO);
Logger.getLogger("sun").setLevel(Level.INFO);
Logger.getLogger("LogStrings").setLevel(Level.INFO);
Logger.getLogger("com.myprivate.package").setLevel(Level.ALL);
// ...
}
}
И это журнал, который я получаю на консоли, переполненный событиями FINE или FINER/FINEST, которые не связаны с моими (я хочу, однако, иметь возможность видеть мои собственные события любого уровня и, таким образом, устанавливать глобальный уровень, чтобы информация не работает для меня ...)
FINEST:null [getJndiNameEnvironment @ com.sun.enterprise.container.common.impl.ComponentEnvManagerImpl] Mon Apr 29 17:11:36 CEST 2013
ComponentEnvManagerImpl: getJndiNameEnvironment 123ProductV1_/123ProductV1 is class com.sun.enterprise.deployment.WebBundleDescriptor
FINEST:null [getJndiNameEnvironment @ com.sun.enterprise.container.common.impl.ComponentEnvManagerImpl] Mon Apr 29 17:11:36 CEST 2013
ComponentEnvManagerImpl: getJndiNameEnvironment 123ProductV1_/123ProductV1 is class com.sun.enterprise.deployment.WebBundleDescriptor
FINEST:null [getCurrentJndiNameEnvironment @ com.sun.enterprise.container.common.impl.ComponentEnvManagerImpl] Mon Apr 29 17:11:36 CEST 2013
ComponentEnvManagerImpl: getCurrentJndiNameEnvironment 123ProductV1_/123ProductV1 is class com.sun.enterprise.deployment.WebBundleDescriptor
FINEST:null [getJndiNameEnvironment @ com.sun.enterprise.container.common.impl.ComponentEnvManagerImpl] Mon Apr 29 17:11:36 CEST 2013
ComponentEnvManagerImpl: getJndiNameEnvironment 123ProductV1_/123ProductV1 is class com.sun.enterprise.deployment.WebBundleDescriptor
FINEST:null [getCurrentJndiNameEnvironment @ com.sun.enterprise.container.common.impl.ComponentEnvManagerImpl] Mon Apr 29 17:11:36 CEST 2013
ComponentEnvManagerImpl: getCurrentJndiNameEnvironment 123ProductV1_/123ProductV1 is class com.sun.enterprise.deployment.WebBundleDescriptor
FINEST:null [getJndiNameEnvironment @ com.sun.enterprise.container.common.impl.ComponentEnvManagerImpl] Mon Apr 29 17:11:36 CEST 2013
ComponentEnvManagerImpl: getJndiNameEnvironment 123ProductV1_/123ProductV1 is class com.sun.enterprise.deployment.WebBundleDescriptor
FINEST:null [getCurrentJndiNameEnvironment @ com.sun.enterprise.container.common.impl.ComponentEnvManagerImpl] Mon Apr 29 17:11:36 CEST 2013
ComponentEnvManagerImpl: getCurrentJndiNameEnvironment 123ProductV1_/123ProductV1 is class com.sun.enterprise.deployment.WebBundleDescriptor
FINEST:null [getJndiNameEnvironment @ com.sun.enterprise.container.common.impl.ComponentEnvManagerImpl] Mon Apr 29 17:11:36 CEST 2013
ComponentEnvManagerImpl: getJndiNameEnvironment 123ProductV1_/123ProductV1 is class com.sun.enterprise.deployment.WebBundleDescriptor
FINEST:null [getJndiNameEnvironment @ com.sun.enterprise.container.common.impl.ComponentEnvManagerImpl] Mon Apr 29 17:11:36 CEST 2013
ComponentEnvManagerImpl: getJndiNameEnvironment 123ProductV1_/123ProductV1 is class com.sun.enterprise.deployment.WebBundleDescriptor
FINEST:null [getCurrentJndiNameEnvironment @ com.sun.enterprise.container.common.impl.ComponentEnvManagerImpl] Mon Apr 29 17:11:36 CEST 2013
ComponentEnvManagerImpl: getCurrentJndiNameEnvironment 123ProductV1_/123ProductV1 is class com.sun.enterprise.deployment.WebBundleDescriptor
FINEST:null [getJndiNameEnvironment @ com.sun.enterprise.container.common.impl.ComponentEnvManagerImpl] Mon Apr 29 17:11:36 CEST 2013
.../...
любых предложений о том, как нейтрализовать наводнение журнала (без конфигурации XML)?
Xavier