如何在 Java/GWT 网络应用程序中实施 Log4j-audit

How to implement Log4j-audit in Java/GWT web app

目前正在为 Web 应用程序实施审计日志记录,并希望使用 log4j-audit。该应用程序使用 Jboss 6.4 托管的 OpenJDK 8 和 GWT 2.7 编写,并使用 Ant 1.10.5 构建。我的问题是如何将 log4j-audit 框架实施到我们当前的结构中?我已经完成了 getting started 部分并详尽地阅读了文档,但是我缺乏 Maven 经验使得很难将其传输到我们的堆栈。

我目前的理解是我需要创建一个请求过滤器来实例化一个 RequestContext 对象,该对象将变量存储在 ThreadContext 映射中。我需要知道的是如何使用我的 catalog.json 生成我可以在我的代码中引用的接口。

谢谢!

编辑:

感谢下面标记答案的 1. 部分中的信息,我能够创建一个自定义 Ant 任务,其 POM 类似于示例应用程序中的 POM,它构建了 audit-service-api.jar 并在我的代码库中引用生成的源代码。

RequestContextFilter 是 Log4j ThreadContext 的扩展,允许您将传入的 headers REST 请求转换为 ThreadContext 属性。这对于审计很重要,这样您就可以传递用户的 loginId、IP 地址、帐号等,以便它们可以包含在所有审计事件(以及所有其他日志)中。尽管对于审计日志记录不一定重要,但包括 requestId 和 "sessionId" 对于诊断和调试日志以跨服务和服务器关联日志很重要。

catalog.json 文件用于定义审计事件和属性。通常您会创建一个类似于 log4j-audit-sample 的项目。该项目包含 3 个内容:

  1. 审计服务 API - catalog.json 将驻留在 src/main/resources 中并包含您的事件和属性的定义。当您在此项目上 运行 "mvn clean package"、"mvn clean install" 或 "mvn clean deploy" 时,它将读取目录并为您定义的事件生成所有 Java 接口。然后,您将在您的应用程序中包含从此项目构建的 jar 以及用于记录事件的 log4j-audit-api jar。
  2. 审计服务 - 一种 REST 服务,可用于记录来自 non-Java 应用程序的事件。该服务将根据您的目录验证事件。

Log4j-audit 附带一个 Spring 启动应用程序,可以用作目录的编辑器,因为编辑 JSON 可能很乏味且容易出错。也就是说,Spring 启动应用需要 运行 作为单用户桌面应用,这有点奇怪,所以基于 ElectronJS 的桌面编辑器是 being developed.

Log4j-audit 目前支持两种格式的目录;存储在 git 中的 catalog.json 文件或通过 JPA 访问的 RDMS 目录。通常,存储在 git 中的目录用于生成 Java 接口,因为这些应该只在正常的开发过程中正常修改,并且您希望在正常的发布周期中管理这些定义。 Spring 引导目录编辑器从 git 读取 json 目录,然后将其加载到 in-memory 数据库中,以便编辑器可以利用数据库提供的引用完整性。审计服务可以配置为使用数据库来存储 "dynamic catalog"。没有 Java 接口可用于这些目录条目,并且想要使用这些事件定义执行审计的应用程序必须通过审计服务来完成。

希望这提供了您正在寻找的信息,但如果您执行了“入门”页面中的步骤并查看示例应用程序,您应该知道您需要做什么。如果没有,请跟进更多问题。