基于域内容的动态日志文件?

时间:2012-02-17 13:24:59

标签: java log4j

使用Log4j,有没有办法根据域内容将条目记录到不同的文件?

例如,假设我希望将特定贷款编号,客户名称或公司标识符的所有日志记录信息一起记录在动态生成的日志文件中,称为loan1234.log,customerJimPhelps.log或companyAcmeCorp.log。所需的特定日志文件事先不知道(无法预测哪些贷款或客户需要事先记录)。这将用于生产环境中的支持和调试目的。

1 个答案:

答案 0 :(得分:1)

您可以创建自己的appender,如下所示:

import org.apache.log4j.Logger;
import org.apache.log4j.SimpleLayout;
import org.apache.log4j.FileAppender;

public class Foo {
   static Logger logger = Logger.getLogger(Foo.class);
   public static void main(String args[]) {

      // setting up a FileAppender dynamically...
      SimpleLayout layout = new SimpleLayout();    
      FileAppender appender = new FileAppender(layout,"WhateverYouLike.log",false);    
      logger.addAppender(appender);

      logger.info("WhateverElseYouLike");

      logger.removeAppender(appender);

   }
}