Dựa trên Thorbjørn Ravn Andersens gợi ý tôi đã viết một số mã mà làm công việc này
Thêm dòng sau vào đầu trong phương thức main và nó bây giờ có thể thiết lập mức độ đăng nhập từ dòng COMAND. Điều này đã được thử nghiệm trong một dự án của tôi nhưng tôi mới đến log4j và có thể đã làm một số sai lầm. Nếu vậy, hãy sửa tôi.
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 thực sự được tìm kiếm trên CLASSPATH, bao gồm các tệp jar bên trong. –
Bạn cần đặt "tệp:" ở phía trước đường dẫn nếu đó là tệp trên đĩa. Nói cách khác ... -Dlog4j.configuration = file: http://stackoverflow.com/questions/778933/log4j-configuration-via-jvm-arguments –
crowmagnumb
Điều này hoạt động như được quảng cáo; Tuy nhiên tôi đang cố gắng ghi đè lên một thiết lập của một tập tin thuộc tính trong bình, và sau này xuất hiện để có được thiết lập sau. Lời khuyên nào? –