5

我正在做一个项目,将多台机器的日志数据合并到一个数据库中。

我必须记录场景:

  1. 通常的异常日志记录和开发人员日志记录,例如开发人员将级别转换为调试。
  2. “审计”日志记录。特殊情况需要记录在单独结构的单独数据库中。

我正在使用 logback 和 JMS。“客户端”记录到 JMS 队列,“服务器”读取表单队列并写入数据库。

我正在寻找一种简单的方法来区分这两种类型的日志。我想做的是创建另一个日志级别,例如“审计”,然后我可以在“服务器”端检查它并创建我们的特殊对象结构并写入我们单独的数据库。

但是,这在 logback 中是不可能的。我已经考虑过标记,但这意味着开发人员必须明确应用标记。我的另一个选择是拥有两个单独的记录器,让开发人员获取正确的记录器。这并不像我想要的那样优雅。

我希望开发人员只为调试执行 log.debug,为错误执行 log.error,为审计执行 log.audit。

任何建议,任何人都必须解决类似的问题?

4

1 回答 1

3

首先,为什么不直接使用DBAppender直接登录到数据库,跳过 JMS 层呢?如果您关心性能,Logback 提供了异步记录的工具。

至于过滤,单独的记录器是最简单和最干净的方法(然后只需按记录器/类别进行过滤)。这种方法强调这些是特殊的日志,而不是普通的应用程序调试。我什至会考虑将此审计日志包装在某些服务/方面,以将其与业务逻辑分开。

如果您真的想重用现有的记录器,您可以使用 Logback过滤器在运行时调度和过滤事件。

于 2011-03-11T12:44:41.767 回答