Log4j 配置文件的位置

如果log4j.properties/xml 不在ClassPath 下,则会出现如下的错误:

log4j:WARN No appenders could be found for logger (xxxxx).
log4j:WARN Please initialize the log4j system properly.

所以需要把配置文件放在类路径下。因为Log4j的LogManager类在静态初始化的时候,会从当前线程的类路径中找配置文件。

在eclipse中,我们常常会放在src目录下,这样就会编译到bin目录中,运行时就会被load到类路径中。

如果,我们不想把一个配置文件挂在src下,而是放在一个单独的conf目录下,那么我们可以通过写一个classloader来保证我们可以找到这个文件。具体目录:
[img]http://dl.iteye.com/upload/attachment/231409/bb8d5bf6-0f0f-3c84-a66c-d9384b9ece34.bmp[/img]
我们可以写一个URLClassLoader 并把它的URL 设置为指向Conf目录,它的parent为当前的应用程序ClassLoader,并把它设置为当前线程的ClassLoader。

private static void initClassLoader() {
try {
File dir = new File(ServerProperties.getConfigUrl());
URL url = dir.toURI().toURL();
appLoader = new URLClassLoader(new URL[]{url},Startup.class.getClassLoader());
} catch(MalformedURLException urle) {
urle.printStackTrace();
}
}

Thread.currentThread().setContextClassLoader(appLoader);


这一切都必须在第一次声明一个Log对象之前完成。 Log的配置信息只在第一次使用LogManager的时候被设置。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值