Я сделал функцию инициализации приложения, которую использую как в приложениях Java, так и в приложениях GWT. У меня есть внешний файл logback.xml , для которого я устанавливаю путь к « logback.configurationFile » Системное свойство . В проектах на чистом Java все работает как положено, но не в проектах GWT.
Я реализовал ServletContextListener и в методе contextInitialized Я устанавливаю свойство System. Logback не читает его, но возвращается к основному (красные буквы в консоли).
Итак, я попытался следовать инструкциям Конфигурация logback
LoggerContext context = (LoggerContext) LoggerFactory.getILoggerFactory();
для перенастройки Logback, но это выдает
java.lang.ClassCastException: org.slf4j.impl.SimpleLoggerFactory cannot be cast to ch.qos.logback.classic.LoggerContext
Я также пытался поместить logback.xml в папки: src, war, war / WEB_INF, но он его не читает.
Я переключаюсь на slf4j, потому что предыдущий log4j начал выдавать много исключений «класс не найден» (что-то с использованием регистрации в общем)
Вопрос:
Что не так?
или
Как получить sfl4j (logback) для чтения внешнего XML-файла конфигурации?
или
- Как получить sfl4j (logback) для чтения любого файла конфигурации XML?
Помощь оценена
РЕДАКТИРОВАТЬ: Попытка использовать адаптер log4j с slf4j, и он тоже не работает.
EDIT2: я вернулся к чистому log4j, который раньше не работал. Тем не менее, я добавил log4j.jar прямо в «Установленный JRE» в Eclipse в основной системе JRE, и теперь чистый log4j работает. Мне кажется, что существует большая разница между OpenJDK и Sun JDK, и это вызывает проблемы. Я постараюсь исправить эту проблему через несколько дней. Может быть, есть необходимость в банке в каком-то странном месте.
EDIT3: slf4j теперь работает с log4j, но я должен вручную настроить его. Не имеет значения, куда я положил log4j.xml, он не читается. Похоже, проблема загрузчика классов с Sun JDK. Я скоро попробую с Logback. Это может быть похожая проблема.