2016-11-17 4 views
1

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

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

В настоящее время я знаю, что:

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

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

ответ

3

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

swarm: 
    logging: 
    loggers: 
     com.acme.rest: 
     level: DEBUG 
-1

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

-Dswarm.logging.com.acme.rest=DEBUG 
+0

Ой, не работает –

2

Я создал метод 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; 
    } 

Так что я могу объявить свои свойства на проектов stages.yml как:

project-name: 
    logger: 
    level: DEBUG 
    category: com.example.com, org.anotherexample.com 
+1

OP говорит Ф.О. r * LoggingFraction *: «не то, что мне нужно». – MarianD