log4j动态日志生成

需求:log4j动态生成日志文件(根据不同的编号生成不同的日志文件)

一:我写了一个公用类LogUtil

publicclassLogUtil{

/**

*

*动态改变日志输出路径

*@authoryangliang

*@created2011-9-17下午03:22:41

*@paramcomId:商家编号

*/

publicstaticvoidWriteLog(StringcomId){

//初始化logger后,通过获取logger的appender,来修改appender写入文件的文件名

Appenderappender=Logger.getRootLogger().getAppender("file");

if(appenderinstanceofFileAppender){

FileAppenderfappender=(FileAppender)appender;

//设置文件的输出路径

//fappender.setFile("D:/"+comId+".log");

fappender.setFile(Constant.LOGPATH+comId+".log");

//通过调用appender的activateOptions方法来激活针对appender的修改,

//之后的日志就记录在新的日志文件中了

fappender.activateOptions();

}

}

}

二:如何调用

//comId需要传入的商家编号

Stringcomid="yangliang";

LogUtil.WriteLog(comId);

for(inti=0;i<3;i++){

log.info("-----测试log4j---------");

log.error("----测试log4j---------");

}

在记录日志的时候好多时候与异常一起使用,如:

try{

orgList=registeredcardService.queryOrgs();

}catch(Exceptione){

Stringerrormsg="记名卡查询注册门店失败";

log.error(errormsg);

log.error(e.getCause());

thrownewException(errormsg,e);

}

三:下面是我写的一个测试类

publicclassTestLog{

publicstaticvoidmain(String[]args){

PropertyConfigurator.configure("D:/log4j.properties");//读取log4j配置文件

Loggerlogger=Logger.getLogger(TestLog.class);

Stringcomid="yangliang";//根据需求的不同输出到不同的日志文件

//初始化logger后,通过获取logger的appender,来修改appender写入文件的文件名

Appenderappender=Logger.getRootLogger().getAppender("file");

if(appenderinstanceofFileAppender){

FileAppenderfappender=(FileAppender)appender;

fappender.setFile("D:/log/"+comId+".log");

//通过调用appender的activateOptions方法来激活针对appender的修改,之后的日志就记录在新的日志文件中了

fappender.activateOptions();

}

for(inti=0;i<3;i++){

logger.info("-----测试log4j---------");

logger.error("----测试log4j---------");

}

}

}

相关推荐