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



我将log4j.properties文件放在 Eclipse 项目结构中的什么位置,以便在此操作期间找到它:

PropertyConfigurator.configure("log4j.properties");  

我找到了以下链接:

将 Log4j.properties 放入 Eclipse 项目的正确位置在哪里?

但是根据答案(选择),我认为该设置是针对服务器本身的,并且将是
适用于所有项目。但是我只希望这个.properties文件仅用于我相关的项目。

我的项目结构是:

AccountCeation //project name  
    Java Resources: src  
        com.alw.controllers //packages  
        .....  
        log4j.properties  

我总是为此FileNotFoundException

注意:我正在开发一个带有Spring框架的动态Web应用程序。

请指导我在哪里失踪?

我能够在Apache Tomcat 6中运行Eclipse Dynamic Web项目找到此问题的解决方案。 Spring 中可能有一种更优雅的方式来访问上下文和加载资源。

两个基本步骤

(1) 将 log4j.properties 文件放入 war 文件的"类目录"中。

(2) 从当前上下文中读取 log4j 属性文件。 我发现最好的方法是访问当前线程的上下文并从那里开始工作。

对于上述第一步,更改 Eclipse 构建过程以添加一个附加目录,该目录最终将加载到 war 文件中的 WEB-INF/classes 目录中。具体说来。。。。

(1) 在 Eclipse 中,在项目资源管理器中右键单击您的项目,选择"新建"->"文件夹"。您可以将文件夹命名为任何名称,但在这种情况下,标准是"资源"。新文件夹应显示在项目的根级别。

(2) 将 log4j.properties 文件移动到这个新文件夹中。

(3) 再次右键单击项目,选择"构建路径"->"配置构建路径"。选择"来源"标签。单击"添加文件夹"按钮。浏览以查找在上述步骤 (1) 中创建的新文件夹。选择"确定"。

(4) 回到 eclipse 项目资源管理器视图后,请注意该文件夹现已移动到"Java 资源"区域(即由于 eclipse 演示文稿抽象,它不再位于根目录)。

(5) 干净构建项目。

(6) 要验证 .properties 文件现在是否存在于战争文件的 WEB-INF/类中,请将 war 文件导出到一个容易的位置(右键单击项目 -> 导出 -> 战争文件)并签出内容。请注意,log4j.properties 文件现在出现在 WEB-INF/classes 中。

现在是上面的第二步,访问上下文以读取文件。 在尝试读取文件的位置添加以下代码。 请注意,这会从 war 文件上下文中读取此内容,因此当 war 文件从一个服务器移动到另一个服务器时,这个"应该"起作用。

ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
PropertyConfigurator.configure(classLoader.getResourceAsStream("log4j.properties") );

最新更新