Мой logging.properties пользовательский форматировщик не работает - PullRequest
0 голосов
/ 06 ноября 2019

Я на самом деле добавляю логирование Java (не могу использовать другие фреймворки) в свой проект. Я создаю свое приложение на .war и развернул его через Weblogic, регистратор работает с моей конфигурацией logging.properties, за исключением средства форматирования, я не знаю, почему приложение его игнорирует.

Этомой класс, где я готовлю регистратор;

public class CtgLogger {
private static final String LOAD_ERROR = "Properties could not be loaded.";

private static final Map<String, Level> LEVEL_MAP;
private static final Logger LOGGER = Logger.getLogger(Logger.GLOBAL_LOGGER_NAME);
static {

    final InputStream inputStream = CtgLogger.class.getResourceAsStream("/logging.properties");
    try {
        LogManager.getLogManager().readConfiguration(inputStream);
    } catch (Exception e) {
        Logger.getAnonymousLogger().severe(LOAD_ERROR);
        Logger.getAnonymousLogger().severe(e.getMessage());
    }
    // and I add the LEVEL_MAP to the logger...

И это мои свойства ...

handlers = java.util.logging.FileHandler
java.util.logging.FileHandler.pattern=logsfolder/CTGLOG_%g.log
java.util.logging.FileHandler.level=ALL
java.util.logging.FileHandler.limit=3000
java.util.logging.FileHandler.count=6
#java.util.logging.FileHandler.formatter=java.util.logging.SimpleFormatter
#If I use the SimpleFormatter, apps goes well with it format. 
java.util.logging.FileHandler.formatter = com.package.my.log.JsonCustomFormatter
#If I use my custom formatter, the weblogic works with a XMLFormatter (default)

Я знаю, что .properties работает, потому что регистратор работает с шаблоном,лимит и количество я установил.

PD: Если я запускаю свое приложение с JUnit, журналы работают с моим пользовательским форматером, но не с weblogic! Не знаю почему!

1 Ответ

0 голосов
/ 06 ноября 2019

В Weblogic будет несколько загрузчиков классов. Стандартный LogManager может видеть только классы, загруженные через системный загрузчик классов . Проверьте Журнал сервера на наличие ошибок, связанных с отсутствием вашего пользовательского класса. Если это так, вы должны переместить ваш форматер в системный загрузчик классов. В противном случае вам придется использовать код для установки вашего средства форматирования из вашего веб-приложения, которое выполняется в дочернем загрузчике классов.

В LogManager.readConfiguration также есть ошибки и альтернативные методы для использования в JDK9 и более поздних версиях. .

...