Java log4j db apender-数据库中的日志事件类型

Java log4j db apender-数据库中的日志事件类型,java,log4j,Java,Log4j,我在java web应用程序中使用log4j2 我将其配置为在数据库中存储日志信息,以便后者用于报告 我想将生成此日志的事件类型存储在日志表的一列中。这些是诸如登录/注销/更改密码/删除记录等应用程序事件 我认为在db中为每种类型的事件都有一个单独的表,并为每种类型的事件都有一个单独的记录器/追加器,但这使它变得很麻烦 有没有一个标准的方法来处理这种情况 感谢简单的解决方案是创建一个EventLoggingService,它具有向数据库添加特定事件的方法或生成器。如果需要,您可以在其中添加一个日

我在java web应用程序中使用log4j2

我将其配置为在数据库中存储日志信息,以便后者用于报告

我想将生成此日志的事件类型存储在日志表的一列中。这些是诸如登录/注销/更改密码/删除记录等应用程序事件

我认为在db中为每种类型的事件都有一个单独的表,并为每种类型的事件都有一个单独的记录器/追加器,但这使它变得很麻烦

有没有一个标准的方法来处理这种情况


感谢

简单的解决方案是创建一个EventLoggingService,它具有向数据库添加特定事件的方法或生成器。如果需要,您可以在其中添加一个日志记录器,也可以将事件记录到日志附加器中

这样,您可以确保服务在将事件写入数据库之前拥有所有必要的信息。它还易于测试和使用,您可以使用IDE查找记录事件的所有位置


另一个解决方案是创建全局记录器,即公共静态最终记录器。。。事件记录器,您可以在许多地方使用它来记录事件。这更容易设置,如果您已经有了写入数据库的appender,则可以避免重复,但更难提取事件的详细信息,如类型和属性。

感谢您的回答,我想到了这一点,因为我正在使用ThreadContext处理用户名、ip等。我看到的示例,在过滤器中设置THreadContext值。我不知道在托管bean的代码中直接使用它是否被认为是一种好的做法,因为我使用的是JSF,因为直接在过滤器中知道事件类型并不总是那么容易。为什么要将事件记录到数据库中?我需要生成关于这些数据的报告,并通过web界面提供主题。对于当前情况,使用其他应用程序/产品管理日志等不是一个选项,我需要使用jasper自己开发这些报告。我想我现在明白了。请看我的新答案。感谢您的想法,如果可能的话,我希望在实现一个写入DB的服务之前,使用log4j2完成这项工作。Log4j2还可以选择异步写入日志、ThreadContext等。这些特性和其他特性让我在为日志开发自己的服务之前三思而后行。问题是,我需要以一种可以用来将事件类型映射到日志表的列的方式来设置事件类型,因此我需要它能够被logj2配置文件使用/访问。