首页 文章

使用Wildfly Swarm配置日志级别

提问于
浏览
1

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

换句话说,什么是Spring Boot的“logging.level.com.acme.rest = DEBUG”属性?

目前我知道:

  • "swarm.logging=DEBUG"可用于配置 all 日志记录级别(不是我需要的)

  • 可以使用"standalone.xml",但操作不够友好

  • LoggingFraction可用于 programmatically 配置日志记录级别(也不是我需要的)

  • 该文档还提到"logging.level"但到目前为止我无法使其工作

感谢您的时间

3 回答

  • -1

    我创建了一个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

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

    -Dswarm.logging.com.acme.rest=DEBUG
    
  • 3

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

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

相关问题