我有一個使用maven構建的java項目。 我用我的項目java.util.logging.Logger
,並想用logger.properties
文件來配置它(而不是命令行)。Java Logger:無法在logger.properties文件中設置日誌級別
我創建了一個logger.properties
文件是這樣的:
handlers=java.util.logging.FileHandler, java.util.logging.ConsoleHandler
.level=WARNING
java.util.logging.SimpleFormatter.format=[%4$s] %5$s %n
java.util.logging.config.file="../../results/api.log"
下面是我有問題:
java.util.logging.SimpleFormatter.format
是工作。當我在這裏更改格式時,我立即在項目中看到變化。所以我知道至少我正確地導入文件。.level
不工作。我試過將它改爲info
,finest
,warning
等,但是在我改變它之後,即使我告訴它不要顯示INFO,我仍然可以看到所有的INFO消息。java.util.logging.config.file
不工作。我有點期待這一個不工作,因爲它是一個相對路徑。任何人都知道我可以如何解決屬性文件中的相對路徑名?
解決方案
我需要的.level
移動到頂部,這樣的:
logger.properties
.level=WARNING
handlers=java.util.logging.FileHandler, java.util.logging.ConsoleHandler
java.util.logging.SimpleFormatter.format=[%4$s] %5$s %n
然後,爲了節省結果以「api.log」,我在我的代碼中執行了此操作:
RequestHelper.java
import org.apache.commons.io.FilenameUtils;
public class RequestHelper {
private static final Logger LOGGER = Logger.getLogger(RequestHelper.class.getName());
protected RequestHelper() {
//SET LOGGER TO OUTPUT TO "../../results/api.log"
//Logs will ALSO output to console.
String result_file = getNormalizedAbsolutePath("../../results/api.log");
Handler fh = new FileHandler(result_file);
Logger.getLogger("").addHandler(fh);
}
public static String getNormalizedAbsolutePath(String fileName) {
String path;
File file = new File(fileName);
try {
path = file.getCanonicalPath();
} catch (IOException e) {
LOGGER.warning("Error while computing the canonical path of file: " + fileName);
path = file.getAbsolutePath();
}
return FilenameUtils.normalize(path);
}
}
您是否設置了-Djava.util.logging.config.file =「logging.properties」? –