业务审计日志 - 推荐的库或方法?

16

你知道有哪些好的Java库用于审计日志记录吗?或者至少有什么好书/文章可以帮助选择构建应用程序的审计日志记录好方法?

库要求:
- 定义常见的审计元数据(userId, time, IP, ...)
- 定义审计消息类型(发送交易、接收消息等)
- 对单个审计消息进行锁定/签名(以确保不可否认性)
- 基于元数据搜索审计日志
- 等等

编辑:
我不是在寻找自动化解决方案,只需要调用类似下面这样的东西就可以了:

AuditEvent event = new TransactionSentEvent(userId, account, amount, ...)
AuditLog.audit(auditEvent);

重点是需要具有相关的基础设施 - 安全的数据库存储、不可否认性等。

5个回答

13

所以,如果你正在寻找一个框架,你可以尝试使用logback-audit。它是由Java日志库logback背后的人开发的。


5
NB: logback-audit 是一款商业软件。 - Vladimir Dyuzhev

4
如果您使用Java,则一种方法是使用springframework和aop。这是最灵活的选项。这里有一个示例 您也可以在数据库级别上使用hibernate。(更多信息)

如果我必须再做一次,我会这样做。但是,为了使方法拦截正常工作,您必须非常“干净”地构建业务逻辑,因为方法拦截并不总是提供在方法内部获取的详细信息(例如,如果您在方法内查找帐户并想要审计帐户的某些非ID属性(如当前值),则拦截器将无法访问--因此您必须将该方法拆分为两个--以便您要审计的所有属性都在方法拦截器范围内。 - Justin
谢谢您的回答 - 实际上我更需要比方法或类级别更高级别的审计。 - krtek
这个答案对我非常有帮助,我更倾向于选择Hibernate选项。 ;) - huahsin68

2

很酷,这正是我一直在寻找的! - krtek

1

你可以通过注解在不使用Spring的情况下使用AscpectJ库


是的,那是真的,忘了提到。谢谢。 - surajz

0
业务/操作级别日志记录的好方法是确定您需要记录的内容。 您已经做到了这一点。
您实际上不需要添加任何新的框架或AOP。 然而,您有一些额外要求,这些要求阻止您使用常见的日志框架,例如Log4J或java.util.logging,而不会创建更多工作。
我能想到的最简单的方法是拥有一个审计类,其中注入或配置了一个JDBC连接。 如果您已经在使用Spring框架,则可以通过Spring完成此操作。 如果您没有DI容器,则需要将其定义为单例。
另一个您需要的功能是签名能力。 Java具有java.security.Signature来签名和验证数据。
正如我之前所说,您有要求防止您使用可用的日志框架。 那是:
元数据搜索审核日志
为了方便搜索,您需要将数据存储在数据库中,因为将数据写入文本文件将很难进行。 使用日志框架,您必须学习API并绑定框架,这不是标准的一部分。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接