在eclipse项目结构中的动态Web应用程序中存储log4j.properties文件的位置?

时间:2012-05-23 12:41:31

标签: eclipse log4j

我将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应用程序。

请指导我失踪的地方?

1 个答案:

答案 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") );