Конфигурация уровней логов с Wildfly Swarm

Как при разработке приложения на основе Wildfly Swarm настроить уровни ведения журнала, используя свойства, которые можно использовать в файле project-stages.yml?

Другими словами, что эквивалентно свойствам «logging.level.com.acme.rest=DEBUG» Spring Boot?

На данный момент я знаю, что:

  • "swarm.logging=DEBUG" можно использовать для настройки всех уровней ведения журнала (не то, что мне нужно)
  • Можно использовать «автономный.xml», но он недостаточно удобен для работы.
  • LoggingFraction можно использовать для программной настройки уровней ведения журнала (тоже не то, что мне нужно)
  • В документации также упоминается «logging.level», но я пока не смог заставить его работать.

Спасибо за ваше время


person Florian Beaufumé    schedule 17.11.2016    source источник


Ответы (3)


В файле project-stages.yml вы можете определить уровни ведения журнала (см. Справочное руководство Wildfly Swarm для получения полного списка всех параметров):

swarm:
  logging:
    loggers:
      com.acme.rest:
        level: DEBUG
person Lasrik    schedule 15.05.2017

Я создал метод loggingFraction для достижения этой цели. Как это:

 protected LoggingFraction logging() {

        String logName = swarm.stageConfig().resolve("application.name").getValue();
        String category = swarm.stageConfig().resolve("logger.category").getValue();

        String levelName  =swarm.stageConfig().resolve("logger.level").getValue();

        final String logFile = System.getProperty("user.dir") + File.separator+
                "target"+File.separator+
                logName+".log";

        LoggingFraction loggingFraction = new LoggingFraction()
                .periodicSizeRotatingFileHandler(logName,(h)->{
                    h.level(Level.valueOf(levelName))
                            .append(true)
                            .suffix(".yyyy-MM-dd")
                            .rotateSize("30m")
                            .enabled(true)
                            .encoding("UTF-8")
                            .maxBackupIndex(2);
                    Map<String,String> fileSpec = new HashMap<>();
                    fileSpec.put("path", logFile);
                    h.file(fileSpec);
                }).logger(GetinApp.class.getPackage().getName(),(l)->{
                    l.level(Level.valueOf(levelName))
                            .handler(logName);
                });;
      })
        List<String> categories = Arrays.asList(category.split(","));
        categories.forEach(c->{
            loggingFraction.logger(c.trim(),l->{
               l.level(Level.valueOf(levelName)).handler(logName);
            });
        });

        return loggingFraction;
    }

Поэтому я могу объявить свои собственные свойства в project-stages.yml, например:

project-name:
  logger:
    level: DEBUG
    category: com.example.com, org.anotherexample.com
person Rafael Pereira    schedule 02.12.2016
comment
OP говорит для LoggingFraction: это не то, что мне нужно. - person MarianD; 02.12.2016

Вы должны иметь возможность добавить категорию в конец:

-Dswarm.logging.com.acme.rest=DEBUG
person Bob McWhirter    schedule 17.11.2016