使用JMS和logback进行分布式日志记录

Wil*_*ill 5 java logging jms logback

我正在开发一个项目,将来自多台机器的日志数据合并到一个数据库中.

我必须记录方案:

  1. 通常记录异常和开发人员记录,例如dev将级别调整为调试.
  2. "审核"记录.需要在具有单独结构的单独DB中记录特殊方案.

我正在使用logback和JMS."Client"记录到JMS Queue,"Server"读取表单队列并写入DB.

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

但是这在logback中是不可能的.我考虑过标记,但这意味着开发人员必须明确应用标记.我的另一个选择是拥有两个独立的记录器,并让开发人员获取正确的记录器.这并不像我想的那么强烈.

我希望开发人员只需要log.debug进行调试,log.error进行错误,log.audit进行审计.

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

Tom*_*icz 3

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

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

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