Basado en Thorbjørn Ravn Andersen sugerencia que escribió un código que hace que este trabajo
Añadir la siguiente temprano en el método principal y ahora es posible ajustar el nivel de registro desde la línea de comand. Esto ha sido probado en un proyecto mío, pero soy nuevo en log4j y podría haber cometido algún error. Si es así, por favor corrígeme.
Logger.getRootLogger().setLevel(Level.WARN);
HashMap<String,Level> logLevels=new HashMap<String,Level>();
logLevels.put("ALL",Level.ALL);
logLevels.put("TRACE",Level.TRACE);
logLevels.put("DEBUG",Level.DEBUG);
logLevels.put("INFO",Level.INFO);
logLevels.put("WARN",Level.WARN);
logLevels.put("ERROR",Level.ERROR);
logLevels.put("FATAL",Level.FATAL);
logLevels.put("OFF",Level.OFF);
for(String name:System.getProperties().stringPropertyNames()){
String logger="log4j.logger.";
if(name.startsWith(logger)){
String loggerName=name.substring(logger.length());
String loggerValue=System.getProperty(name);
if(logLevels.containsKey(loggerValue))
Logger.getLogger(loggerName).setLevel(logLevels.get(loggerValue));
else
Logger.getRootLogger().warn("unknown log4j logg level on comand line: "+loggerValue);
}
}
FILE_PATH se busca realmente en CLASSPATH, incluidos los archivos jar internos. –
Debe colocar "file:" delante de la ruta si se trata de un archivo en el disco. En otras palabras ... -Dlog4j.configuración = archivo: http://stackoverflow.com/questions/778933/log4j-configuration-via-jvm-arguments –
crowmagnumb
Esto funciona como se anuncia; sin embargo, estoy tratando de anular una configuración de un archivo de propiedades en el jar, y este último parece establecerse después. ¿Algún consejo? –