【问题标题】:How to implement Log4j-audit in Java/GWT web app如何在 Java/GWT Web 应用程序中实现 Log4j-audit
【发布时间】:2020-03-26 18:46:51
【问题描述】:

目前正在为 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 和参考我的代码库中生成的源代码。

【问题讨论】:

    标签: java ant jboss log4j log4j-audit


    【解决方案1】:

    RequestContextFilter 是 Log4j ThreadContext 的扩展,它允许您将 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 服务,可用于记录来自非 Java 应用程序的事件。该服务将根据您的目录验证事件。

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

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

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

    【讨论】:

      猜你喜欢
      • 2019-06-06
      • 2012-05-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-16
      • 2010-10-16
      • 1970-01-01
      相关资源
      最近更新 更多