在用log4j生成日志的时候,开发环境就可以,可以打成War包后,就不可以.这个问题,我找了一天,才解决.
其实问题不大,就是平时没有注意到.
我是把log4j放到一个servlet中初始化.之前的写法是:
String prefix = getServletContext().getRealPath("/");
String file = getInitParameter("log4j-init-file");
if(file != null)
{
PropertyConfigurator.configure(prefix+file);
}这样写,取得是物理地址,在开发环境部署weblogic或者tomcat的时候,都是以文件的形式才部署.
但是生成War包后,在到weblogic10上部署的时候,就不是以文件的形式了,所以代码应该改成以下样子:
String file = getInitParameter("log4j-init-file");
Properties ps = new Properties();
try {
ps.load(getServletContext().getResourceAsStream(file));
} catch (IOException e) {
e.printStackTrace();
}
PropertyConfigurator.configure(ps);
通过这个问题,让我想到,对于其他配置文件的处理,也要注意.
如果改起来太麻烦.还有一个简单的方法,是不需要改动代码的.
先用myeclipse配置weblogic中间件.然后部署,完成后,去weblogic路径下复制出部署文件,这样以后可以直接用目录式的工程部署了,不用生成War包.
我用的weblogic10,myeclipse生成的部署文件路径:
C:\bea\user_projects\domains\myweb\autodeploy\自己的项目
本文介绍了一个关于log4j在不同环境下配置的问题及解决方案。作者发现将log4j配置文件放置在servlet初始化阶段读取的方式,在开发环境中可行,但打包成War并在WebLogic上部署时出现问题。文章提供了修改代码以适应War包部署的具体实现。
9135

被折叠的 条评论
为什么被折叠?



