Java 按类列出的log4j追加器

Java 按类列出的log4j追加器,java,apache,logging,log4j,appender,Java,Apache,Logging,Log4j,Appender,我已经编写了一个log4j appender,它将接受特定的消息类型并将其转储到MongoDB集群。我们称之为“审计” 我希望能够做到以下几点: logger.debug (new AuditEntry (...)); 让log4j自动将任何“AuditEntry”类型的日志消息路由到我的审计附加器。这可能吗?到目前为止,我唯一能够做到这一点的方法是将其添加到根记录器链的appender中: log4j.rootLogger=DEBUG, Console, Audit 当然,AuditEnt

我已经编写了一个log4j appender,它将接受特定的消息类型并将其转储到MongoDB集群。我们称之为“审计”

我希望能够做到以下几点:

logger.debug (new AuditEntry (...));
让log4j自动将任何“AuditEntry”类型的日志消息路由到我的审计附加器。这可能吗?到目前为止,我唯一能够做到这一点的方法是将其添加到根记录器链的appender中:

log4j.rootLogger=DEBUG, Console, Audit
当然,AuditEntry也将toString()输出到控制台——如果可能的话,我希望避免这种情况

我已经想到了一个解决方案,但我不确定这是否是最好的解决方案。将审核过滤器设置为链中的第一个:

log4j.rootLogger=DEBUG, Audit, Console
然后在我的log4j appender调用“clearFilterChain()”中,我还没有尝试过这个。。。我也没有找到关于这个函数的任何文档


还有其他解决方案吗?

您希望在此处使用log4j的原因是什么?为什么不使用静态createAudit方法或类似方法编写一个名为Audit的类呢。你似乎想使用iPhone键盘。您似乎想阻止默认的log4j行为,那么为什么要使用它呢?我想使用log4j来更好地控制消息的路由位置——mongo、file、oracle db等等。所有这些都由一个简单的配置文件控制。但是看起来我可能不得不放弃log4j的可能副本,而不是它的副本。我们想从任何类登录。