默认情况下我们会使用log4j.properties这个作为配置文件,放在bin目录下面,但是如果我们把工程打包成一个jar包(或者是服务),则代码从哪里获取配置配置文件呢?我在网上查询了相关资料,觉得有点意思,加上自己的总结,简单描述一下。
1. 配置文件的加载是在第一次使用,因此在系统工程第一次使用log4j的时候就要指明加载的配置文件的路径
2. 在linux服务器上使用的是相对路径,可以指明配置文件的方法
第一种方式:
//指明配置文件的加载目录加载.properties文件
PropertyConfigurator.configure("E://log4j.properties");
第二种方式:
/**
* 初始化log4j配置信息
* @throws Exception
*/
public static void initLog4j() throws Exception
{
FileInputStream istream = null;
try
{
Properties props = new Properties();
//指明了获取配置文件的路径
istream = new FileInputStream("conf/log4j.properties");
props.load(istream);//从输入流中读取属性列表
PropertyConfigurator.configure(props);
} catch (Exception ex)
{
log.error("initLog4j.error:", ex);
throw new Exception(ex);
} finally
{
istream.close();
}
}
使用上面的方法可以实现动态的添加配置信息
如何实现动态的指定Log存放的路径,即不用写死?
1、 将配置文件中的指定路径删除掉
2、 指明参数的配置路径
props.put("log4j.appender.file.File", sc.getRealPath("/log/hb.log"));
log4j.appender.file.File=dd/test.log
表示在当前工程下面建立一个dd文件夹,里面有test.log文件,即dd目录与Bin目录同等级