デバッグモードが設定されていない場合、レベルをFINEST
に設定しない限り、ログレベルをINFO
に設定するアプリケーションがあります。java.util.loggingのプロパティファイルで設定された値をプログラムでオーバーライドすることはできますか?
プロパティファイル内のレベルを設定すると、logger.setLevel(Level.FINEST)
を使用してプログラムからオーバーライドされません。プロパティファイルの.level
フィールドに何も設定しないと、デフォルトでINFOレベルが取られ、再びisDebugEnable()の場合は、FINEST
を使用するようにオーバーライドすることはできません。
このレベルを条件に基づいて設定するにはどうすればよいですか?
try(InputStream configFile = getClass().getClassLoader().getResourceAsStream("logging.properties")) {
LogManager.getLogManager().readConfiguration(configFile);
} catch (IOException e) {
throw new IllegalStateException("Unable to load default logging properties.", e);
}
if (isDebugEnabled()) {
logger.setLevel(Level.FINEST);
} else {
logger.setLevel(Level.INFO);
}
次のように私の設定ファイルは次のとおりです。
handlers= java.util.logging.ConsoleHandler
.level= INFO
# default file output is in user's home directory.
java.util.logging.FileHandler.pattern = %h/java%u.log
java.util.logging.FileHandler.limit = 50000
java.util.logging.FileHandler.count = 1
java.util.logging.FileHandler.formatter = java.util.logging.XMLFormatter
# Enable console to set level to FINEST and above.
java.util.logging.ConsoleHandler.level = FINEST
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
従いますが、これを行うには良い方法があるかどうかを知りたいと、私が使用してこれを行うことができます。あなたはJVMの起動前にDEBUG
オプションを設定している場合は、単にdebug.properties
と呼ばれる第二logging.properties
ファイルをパッケージ化して、デバッグオプションをしたいときdebug.properties
を指すようにjava.util.logging.config.file
を変更
ConsoleHandler consoleHandler = new ConsoleHandler();
setLogLevel();
consoleHandler.setLevel(Level.FINEST);
logger.addHandler(new ConsoleHandler());
[Java - 動的ロギングレベルの変更]の可能な複製(https://stackoverflow.com/questions/13760095/java-dynamically-change-logging-level) – Avinash