ビルドに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=WARNING handlers=java.util.logging.FileHandler, java.util.logging.ConsoleHandler java.util.logging.SimpleFormatter.format=[%4$s] %5$s %n
その後
logger.properties:
ソリューション
は、私はこのように、先頭に.level
を動かすのに必要な"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"を設定しましたか? –