为特定的调用层次结构定义记录器

时间:2010-03-25 12:13:09

标签: logging hierarchy

目前我正在为我的应用程序处理log4j的东西。我有一个特定的日志记录要求。我需要为特定的调用层次结构定义记录器。 这意味着特定调用层次结构的所有日志消息都应该转到特定的appeneder。

示例

AddFormAction( method1 )--- | --- FormBusinessObject( method4 ) - | - FormDAOObject( method5

EditFormAction(method2)----- | ---- FormBusinessObject(method4) - | - FormDAOObject(method5)

DeleteFormAction(method3)---- | --- FormBusinessObject(method4) - | - FormDAOObject(method5)

我想为特定的调用层次结构1 - 4 -5定义一个记录器。这些消息应该转到addform.log。

我不希望2-4-5或3-4-5调用层次结构的消息转到addform.log。

希望我明白我的要求。任何帮助都非常感谢。提前感谢您的回复。

2 个答案:

答案 0 :(得分:0)

我对log4j了解不多,但这听起来像是AspectJ的完美案例。

答案 1 :(得分:0)

一种方法是使用注入来为依赖关系提供其记录器实例。

 public bool addFormAction( .... form data .... ) {
     Logger logger = LogManager.getLogger( "AddFormLogger" );
     FormBusinessObject form = new FormBusinessObject( logger );
     form.setProperty1( parameter1 );
     form.save();
 }

...

 public class FormBusinessObject
 {
      private Logger logger;

      public FormBusinessObject() {
          logger = LogManager.GetLogger( "DefaultLogger" );
      }

      public FormBusinessObject( Logger logger ) {
          logger = logger;
      }

      ...

      public void save() {
           logger.info( "Saving form" );
           ...
      }
}