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