【问题标题】:How to configure application audit log on a separate file in Wildfly-swarm如何在 Wildfly-swarm 中的单独文件上配置应用程序审计日志
【发布时间】:2017-12-31 13:42:16
【问题描述】:

我已经配置了 Logging 部分,并尝试添加一个额外的处理程序来使用一个类别将特定日志存储在不同的文件中,方法是查看 How to log application auditing to separate file on Wildfly 8 中的答案,但要适应 Wildfly-Swarm fluent API。

代码如下所示:

LoggingFraction loggingFraction = new LoggingFraction()
            .consoleHandler(level, "COLOR_PATTERN")
            .formatter("PATTERN", "%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p [%t] (%c{1}) %s%e%n")
            .formatter("COLOR_PATTERN", "%K{level}%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p [%t] (%c{1}) %s%e%n")
            .formatter("AUDIT", "%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p (%c{1}) %s%e%n")
            .periodicSizeRotatingFileHandler("FILE", h ->{
                h.level(level)
                        .namedFormatter("PATTERN")
                        .append(true)
                        .suffix(".yyyy-MM-dd")
                        .rotateSize(maxSize)
                        .enabled(true)
                        .encoding("UTF-8")
                        .maxBackupIndex(maxFiles);
                Map<String,String> fileSpec = new HashMap<>();
                fileSpec.put("path", getLogsDirectory() + "/" + "application.log");
                h.file(fileSpec);
            })
            .periodicSizeRotatingFileHandler("FILE_AUDIT_HANDLER", h ->{
                h.level(level)
                        .namedFormatter("AUDIT")
                        .append(true)
                        .suffix(".yyyy-MM-dd")
                        .rotateSize(maxSize)
                        .enabled(true)
                        .encoding("UTF-8")
                        .maxBackupIndex(maxFiles);
                        Map<String,String> fileSpec = new HashMap<>();
                        fileSpec.put("path", getLogsDirectory() + "/" + "application-audit.log");
                        h.file(fileSpec);
            })
            .rootLogger(l -> {
                l.level(level)
                        .handler("CONSOLE")
                        .handler("FILE")
                        ;
            })
            .logger("FILE_AUDIT", l -> {
                l.level(level)
                .category("com.company.app.webservice")
                .level(Level.INFO)
                .handler("FILE_AUDIT_HANDLER")
                ;
            })
            ;

然后我在代码中创建了一个普通的Logger来添加日志,像这样:

private static final Logger LOGGER_AUDIT = LoggerFactory.getLogger("com.company.app.webservice");
...
LOGGER_AUDIT.info("Testing audit log")

但它不起作用。
我假设类别名称只需要匹配 Logger 名称,以某种方式 Logger 名称“以”类别名称开头,然后它将被包含在内。我对吗?
我不知道我的配置是否有问题,或者不应该那样使用 Logger。

【问题讨论】:

    标签: logging wildfly wildfly-swarm


    【解决方案1】:

    category 属性有点像旧属性。如果有意义的话,记录器名称确实是类别。在上面的示例中,记录器将命名为FILE_AUDIT,这意味着您将匹配Logger.getLogger("FILE_AUDIT")

    可能是您想要的。

    LoggingFraction loggingFraction = new LoggingFraction()
                .consoleHandler(level, "COLOR_PATTERN")
                .formatter("PATTERN", "%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p [%t] (%c{1}) %s%e%n")
                .formatter("COLOR_PATTERN", "%K{level}%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p [%t] (%c{1}) %s%e%n")
                .formatter("AUDIT", "%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p (%c{1}) %s%e%n")
                .periodicSizeRotatingFileHandler("FILE", h ->{
                    h.level(level)
                            .namedFormatter("PATTERN")
                            .append(true)
                            .suffix(".yyyy-MM-dd")
                            .rotateSize(maxSize)
                            .enabled(true)
                            .encoding("UTF-8")
                            .maxBackupIndex(maxFiles);
                    Map<String,String> fileSpec = new HashMap<>();
                    fileSpec.put("path", getLogsDirectory() + "/" + "application.log");
                    h.file(fileSpec);
                })
                .periodicSizeRotatingFileHandler("FILE_AUDIT_HANDLER", h ->{
                    h.level(level)
                            .namedFormatter("AUDIT")
                            .append(true)
                            .suffix(".yyyy-MM-dd")
                            .rotateSize(maxSize)
                            .enabled(true)
                            .encoding("UTF-8")
                            .maxBackupIndex(maxFiles);
                            Map<String,String> fileSpec = new HashMap<>();
                            fileSpec.put("path", getLogsDirectory() + "/" + "application-audit.log");
                            h.file(fileSpec);
                })
                .rootLogger(l -> {
                    l.level(level)
                            .handler("CONSOLE")
                            .handler("FILE")
                            ;
                })
                .logger("com.company.app.webservice", l -> {
                    l.level(level)
                    .level(Level.INFO)
                    .handler("FILE_AUDIT_HANDLER")
                    ;
                })
                ;
    

    请注意,唯一真正的变化是删除类别(这是一个只读属性)并将 FILE_AUDIT 名称更改为 com.company.app.webservice

    【讨论】:

      猜你喜欢
      • 2015-02-14
      • 1970-01-01
      • 2011-05-29
      • 2018-09-17
      • 1970-01-01
      • 2015-07-20
      • 2016-07-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多