如何创建一个可以写入结构化数据的自定义log4j2附加程序?

时间:2020-06-23 12:12:36

标签: log4j2

由于log4j 1.x是end of life,因此我想在Log4j2中构建我的附加程序,但是网络上没有足够的资源或示例。此外,能够将其与Messagescustom log levels结合使用会很棒。

类似这样的东西:

private static final Logger logger = LogManager.getLogger();
logger.log(ACCESS_LOG, new AccessLogMessage("DateTime", "User", "IP", "Data"));
...
try {
   ...
}
catch(ArithmeticException ex) {
   logger.log(EXCEPTION, new ExceptionMessage(ex));
}

一个简单的可将日志写入控制台的自定义附加程序就足以让我入门。

PS:我的最终目标是将结构化日志数据转换为json格式并将其发送到我的REST服务。

1 个答案:

答案 0 :(得分:1)

已存在写入控制台的附加程序。它称为ConsoleAppender。如果您想以某种特殊的方式格式化数据,则可以创建一个自定义布局来实现。

Log4j提供了许多布局示例。最常见的用例是扩展AbstractStringLayout并实现toSerializable方法。