使用Wildfly Swarm进行日志级别配置

时间:2016-11-17 14:47:14

标签: logging spring-boot wildfly-swarm

在开发基于Wildfly Swarm的应用程序时,如何使用project-stages.yml中可用的属性配置日志记录级别?

换句话说," logging.level.com.acme.rest = DEBUG"等同于什么? Spring Boot的属性?

目前我知道:

  • " swarm.logging = DEBUG"可用于配置所有日志记录级别(不是我需要的)
  • A" standalone.xml"可以使用,但不是很友好
  • LoggingFraction可用于以编程方式配置日志记录级别(也不是我需要的)
  • 文档还提到" logging.level"但到目前为止我无法使其工作

感谢您的时间

3 个答案:

答案 0 :(得分:3)

project-stages.yml 中,您可以定义日志记录级别(有关所有选项的完整列表,请参阅Wildfly Swarm Reference Guide):

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

答案 1 :(得分: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;
    }

所以我可以在 project-stages.yml 上声明我自己的属性,如:

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

答案 2 :(得分:-1)

您应该能够在最后添加一个类别:

decoded_str.encode("unicode-escape")