Log4j将所有记录器映射到单个记录器

时间:2011-09-24 18:09:48

标签: log4j

我们的中间件团队为每个应用程序分配记录器名称,这就是他们知道将套接字appender指向何处的方式。

我想使用标准的Logger.getLogger(Clazz.class)范例,但这不适用于上述约束。此外,我们无法将库语句记录到我们的socket appender中,这会非常方便。

是否有一种相当轻松的方法可以将所有记录器中的所有内容映射到此中间件分配的记录器?

我认为我们的中间件组搞砸了如何配置企业日志系统。看起来应该使用SocketAppender上的setApplication属性。无论如何,这是我们必须处理的......

1 个答案:

答案 0 :(得分:1)

您想直接将“常规”记录器输出重定向到“中间件记录器”,即不在所有“常规”记录器上设置中间件记录器的附加器,对吗?

如果是这种情况,请尝试编写自己的appender:

class MiddlewareRedirectingAppender extends AppenderSkeleton {
     private Logger middlewareLogger = Logger.getLogger("your 'middleware' logger name");

     public void doAppend(LoggingEvent event) {
         // implement whatever filtering, etc. you want
         middlewareLogger.log(...);
     }
}

将此appender附加到“常规”记录器,或仅附加到根记录器(取决于“中间件”记录器的行为方式)。

免责声明:这只是一个简单的想法,我还没有测试过。