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---------");
}
}
}