当前位置: 首页 > 知识库问答 >
问题:

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

韦嘉颖
2023-03-14

由于Log4J1.x已经寿终正寝,我想在Log4j2中构建我的appender,但网络上没有足够的资源和示例。此外,能够将它与消息和自定义日志级别结合在一起也是很好的。

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个答案

云育
2023-03-14

已存在写入控制台的附加程序。它被称为ConsoleAppender。如果您希望以某种特殊的方式格式化数据,那么您可以创建一个自定义布局来完成此操作。

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

 类似资料:
  • 类似地,我们如何在log4j2中创建自定义的appender,因为我们没有AppenderSkelton类要扩展,而所有其他appender都扩展AppenderBase类。

  • 我正在尝试在log4j2中编写自己的RewritePolicy。文件指出: 然而,我不知道如何将它注入我的配置文件。我如何使它在运行时工作?

  • 问题内容: 我正在尝试在Log4j2中编写自己的RewritePolicy。该文档指出: RewritePolicy是一个接口,允许实现在将LogEvent传递给Appender之前检查并可能对其进行修改。RewritePolicy声明一个必须执行的名为rewrite的方法。该方法通过LogEvent传递,并且可以返回相同事件或创建一个新事件。 这是我的 java类 : 这是我的 yaml配置 文

  • 问题内容: 背景 我想通过python客户端API将换行格式的JSON插入/添加到表中。 例如: 问题是,一行中的所有字段都是可选的,并且没有针对数据的固定定义模式。 询问 我已经读过我们可以使用支持自动模式检测的联合表。 但是,我正在寻找一种功能,该功能将自动从数据中检测模式,相应地创建表,甚至在数据中出现任何额外的列/键而不是创建新表时甚至调整表模式。 使用python客户端API是否有可能。

  • 我创建了一个自定义追加器,但在运行测试时没有调用它。以下是这些属性的外观: 我的appender被称为WindowsEventLogappender。知道我的档案有什么问题吗?我看到了控制台测试消息,但没有看到来自我的appender的消息。现在我只是在我的自定义追加器中做一个system.out.println来验证它是否被调用。

  • 我在为我的Spring Boot应用程序创建一个自定义附加器方面面临着挑战。将引发以下异常: Spring Boot版本:2.1.7 log4j2.properties: 注意:在删除log4j2.properties中的appender引用时,日志会写入log4j2.properties中提到的路径中的文件。因此,问题在于customappender集成。