2011-09-24 96 views
2

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

我想使用标准的Logger.getLogger(Clazz.class)范例,但不符合上述约束条件。此外,我们不能将库语句记录到我们的套接字appender中,这会派上用场。

是否有一种相当无痛的方式来映射从所有记录器到这个中间件分配记录器的所有内容?

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

回答

1

您希望将您的“常规”记录器的输出直接重定向到“中间件记录器”,即不需要在所有“常规”中设置中间件记录器的appender “记录员,对吧?

如果是这种情况,请尝试编写自己的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(...); 
    } 
} 

装上此附加目的地为您的“常规”伐木工人,或者只是根记录器(取决于你的“中间件”记录的行为) 。

声明:这只是一个松散的想法,我没有测试过它。