动态配置路径
若程序需要的日志路径需要不断的变化,而又不可能每次都去改配置文件,那就要采取两种方法。
一、使用环境变量
log4j的配置文件支持windows/linux的环境变量,那我们就用环境变量表示可能会变化的路径。例如使用“log4j.appender.test1.File=${myweb.root}/WEB-INF/log/test1.log”。
二、代码动态配置
这种方法是不用配置文件,而是在程序里用代码配置,代码是活的,所以路径肯定可以写活。示例如下:
import java.io.IOException;
import org.apache.log4j.Appender;
import org.apache.log4j.FileAppender;
import org.apache.log4j.Layout;
import org.apache.log4j.Logger;
import org.apache.log4j.PatternLayout;
public class Test {
private static Logger logger = Logger.getLogger(Test.class);
public static void main (String args[]) throws IOException{
Layout layout = new PatternLayout("%-d{yyyy-MM-dd HH:mm:ss} [ %l:%r ms ] - [ %p ] %m%n");
//将路径配置在这里
Appender appender = new FileAppender(layout,"E://logs/log/log.log");
logger.addAppender(appender);
// 记录debug级别的信息
logger.debug("This is debug message.");
// 记录info级别的信息
logger.info("This is info message.");
// 记录error级别的信息
logger.error("This is error message.");
}
}
这样这个类中的日志就不会按照配置文件中配置的来打印,而是根据代码中配置的pattern和路径来打印。
代码内使用路径更加灵活,但是需要考虑维护的复杂性,配置文件可以用来配置绝大部分通用的日志路径,单独个别的可以在代码内使用参数来配置。