我将log4j.properties
文件放在 Eclipse 项目结构中,以便在此操作中找到它:
PropertyConfigurator.configure("log4j.properties");
我找到了以下链接:
Where is the correct location to put Log4j.properties in an Eclipse project?
但是根据答案(选中),我认为该设置是针对服务器本身的,并且将是
应用于所有项目。但我只想为我的相关项目提供此.properties文件。
我的项目结构是:
AccountCeation //project name
Java Resources: src
com.alw.controllers //packages
.....
log4j.properties
我总是得到FileNotFoundException
。
注意:我正在使用Spring Framework开发动态Web应用程序。
请指导我失踪的地方?
答案 0 :(得分:0)
我能够在Apache Tomcat 6中找到运行Eclipse Dynamic Web Project的问题的解决方案。在Spring中可能有一种更优雅的方式来访问上下文并加载资源。
两个基本步骤
(1)将log4j.properties文件放入war文件的“类目录”中。
(2)从当前上下文中读取log4j属性文件。我发现最好的方法是访问当前线程的上下文并从那里开始工作。
对于上面的第一步,更改Eclipse构建过程以添加另一个目录,该目录最终将加载到war文件中的WEB-INF / classes目录中。具体地说....
(1)在Eclipse中,右键单击项目资源管理器中的项目,选择“新建” - >“文件夹”。您可以将文件夹命名为任何名称,但本例中的标准是“资源”。新文件夹应出现在项目的根级别。
(2)将log4j.properties文件移动到这个新文件夹中。
(3)再次右键单击该项目,然后选择“构建路径” - >“配置构建路径”。选择“来源”标签。单击“添加文件夹”按钮。浏览以找到您在上面步骤(1)中创建的新文件夹。选择“确定”。
(4)回到eclipse Project Explorer视图后,请注意该文件夹现在已移至“Java Resources”区域(即由于eclipse表示抽象而不再位于根目录下)。
(5)清理你的项目。
(6)要验证.properties文件现在存在于war文件的WEB-INF / classes中,请将war文件导出到一个简单的位置(右键单击Project - > Export - > War file)并结帐内容。请注意,log4j.properties文件现在出现在WEB-INF / classes中。
现在进行上面的第二步,访问上下文以读取文件。在尝试读取文件的地方添加以下代码。请注意,这会从war文件上下文中读出这一点,因此当war文件从服务器移动到服务器时,这应该“正常”。
ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
PropertyConfigurator.configure(classLoader.getResourceAsStream("log4j.properties") );