Basierend auf dem Vorschlag von Thorbjørn Ravn Andersens habe ich einen Code geschrieben, mit dem dies funktioniert
Fügen Sie Folgendes früh in die Hauptmethode ein, und es ist jetzt möglich, die Protokollstufe über die Befehlszeile festzulegen. Dies wurde in einem meiner Projekte getestet, aber ich bin neu in log4j und habe möglicherweise einen Fehler gemacht. Wenn ja, bitte korrigieren Sie mich.
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);
}
}