Я пытаюсь добавить регистратор в одну из моих программ, в основном для замены System.out.println()
, и это, похоже, дает мне некоторые проблемы. Это мой первый раз, когда я использую регистратор, поэтому я на нем.SLF4J: SimpleLogger не регистрирует трассировку и отладки, а также не регистрирует исключения
Я просмотрел множество ссылок за последние дни, но до сих пор не удалось заставить мой регистратор поймать исключение; вот некоторые ссылки я смотрел на (некоторые из них 5 лет и нужно, возможно, обновления):
- oracle simple formatter
- slf4j - interface logger
- slf4j - simple logger
- slf4j - faq
- slf4j - message formatter
- stackoverflow 1
- stackoverflow 2
Я использую:
- SLF4J-апи-1.7.22.jar
- SLF4J-простой 1.7.22.jar
- jdk1.8.0_71
- IntelliJ 2016,3. 2
simpleLogger.properties
размещается непосредственно в пакете resources
, этот файл загружается перед регистрацией ger создается, файл загружается правильно, так как я могу изменить дату-время, поскольку мне это нужно (и другие настройки также работают).
Часть Main
класса:
...
private Logger LOG; //field
...
public static void main(String[] args) {
launch(args);
}
...
@Override
public void start(Stage primaryStage) {
/*Create logger*/
createLogger();
LOG.info("Stage start.");
...
}
...
private void createLogger() {
try {
Properties properties = new Properties();
properties.load(LOGGER_PROPERTIES); //path to prop file
} catch (IOException e) {
e.printStackTrace();
}
LOG = LoggerFactory.getLogger(Main.class);
LOG.info("Logger initialised.");
LOG.trace("test trace"); //not working
LOG.debug("test debug"); //not working
LOG.info("test info");
LOG.warn("test warning");
LOG.error("test error");
}
simpleLogger.properties
Файл:
org.slf4j.simpleLogger.logFile=System.out
# org.slf4j.simpleLogger.defaultLogLevel=
# org.slf4j.simpleLogger.log.a.b.c=
org.slf4j.simpleLogger.showDateTime=true
org.slf4j.simpleLogger.dateTimeFormat=HH:mm:ss:SSS
org.slf4j.simpleLogger.showThreadName=false
org.slf4j.simpleLogger.showLogName=false
org.slf4j.simpleLogger.showShortLogName=true
org.slf4j.simpleLogger.levelInBrackets=true
# org.slf4j.simpleLogger.warnLevelString=
# THE FORMAT TRIED
#org.slf4j.simpleLogger.SimpleFormatter.format = [%1$tc] %4$s: %2$s - %5$s %6$s%n
#java.util.logging.SimpleFormatter.format = [%1$tc] %4$s: %2$s - %5$s %6$s%n
#java.util.logging.SimpleFormatter.format="%1$tc %2$s%n%4$s: %5$s%6$s%n"
#org.slf4j.simpleLogger.format=[%1$tc] %4$s: %2$s - %5$s %6$s%n %7$s
#org.slf4j.helpers.MessageFormatter.format = [%1$tc] %4$s: %2$s - %5$s %6$s%n %7$s
#java.util.logging.SimpleFormatter.format="%1$tc %2$s%n%4$s: %5$s%6$s%n"
Часть класса, где я пытаюсь создать исключение:
LOG.info("Creating window - More info: loading.. .fxml");
try {
BP_INFO = FXMLLoader.load(getClass().getResource("/fxml/ImageInf_.fxml")); //HERE change back to ImageInfo.fxml
LOG.info("Creating window - More info: loaded .fxml successfully.");
} catch (IOException e) {
// HERE not showing anything below
System.out.println("CATCH - From Sys out");
LOG.error("CATCH - EXCEPTION", (Throwable) e);
LOG.error("Creating window - More info: Exception");
LOG.error("Creating window - More info: Exception", e);
LOG.error("Creating window - More info: Exception {}", e);
LOG.error("Creating window - More info: Exception {} {} {}", Level.INFO, e.getMessage(), e);
// e.printStackTrace();
}
выход консоли :
12:17:08:995 [INFO] Main - Logger initialised.
12:17:08:996 [INFO] Main - test info
12:17:08:997 [WARN] Main - test warning
12:17:08:997 [ERROR] Main - test error
12:17:08:997 [INFO] Main - Stage start.
...
12:17:27:140 [INFO] View - Creating window - More info: loading.. .fxml
Exception in thread "JavaFX Application Thread" java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
at javafx.fxml.FXMLLoader$MethodHandler.invoke(FXMLLoader.java:1774)
at javafx.fxml.FXMLLoader$ControllerMethodEventHandler.handle(FXMLLoader.java:1657)
...
Задача 1:
Как вы можете видеть trace
и debug
не работают. Я пробовал все свойства в опоре. файл и еще несколько, но пока не удалось поймать какое-либо исключение или применить конкретный формат.
Задача 2:
Как вы можете видеть, исключение также не регистрируется вообще.
Дополнительная информация: Я сбросил настройки IntelliJ, я очищал папку% temp% win раз в разы, я очищал тайники и перезапускал Intellij разное время; все это в попытке, если опора. файл не был правильно прочитан или хранился где-то в кеше.
Любая помощь очень ценится. Пожалуйста, ответьте упрощенным способом.
Я пробовал это, и вы правы, эта часть решения проблемы, я не знал об этом. –
Обновлен ответ о вашей проблеме с исключением. – DVarga
Ум .. Мне не известно об 'InvocationTargetException', я вижу, что проблема здесь совсем другая; как я могу поймать это исключение? –