빌드 할 때 maven을 사용하는 java 프로젝트가 있습니다. 내 프로젝트에서 java.util.logging.Logger
을 사용 중이며 logger.properties
파일 (명령 행 아님)을 사용하여 구성하려고합니다.자바 로거 : logger.properties 파일에서 로그 레벨을 설정할 수 없습니다.
java.util.logging.SimpleFormatter.format
이을하고있다 : 나는 데 문제를 여기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"
있습니다
나는 이런logger.properties
파일을 만들었습니다. 여기서 형식을 변경하면 프로젝트에서 변경 사항을 즉시 볼 수 있습니다. 그래서 나는 적어도 파일을 올바르게 임포트하고 있다는 것을 알고 있습니다..level
은 작동하지 않습니다..info
,finest
,warning
등으로 변경하려고했지만 변경 한 후에도 정보가 표시되지 않더라도 모든 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"까지, 나는 코드에서 이것을했다 :
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"를 설정 했습니까? –