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

时间:2011-02-22 17:03:09

标签: java eclipse log4j classpath

我的Eclipse项目中应该添加log4j.properties文件以使其按预期工作?

10 个答案:

答案 0 :(得分:81)

您可以随意添加它,在运行项目时,通过单击以下命令配置类路径并添加log4j.properties文件的位置: 运行 - >运行配置 - > [classpath tab] - >点击用户条目 - >高级 - >选择添加文件夹 - >选择log4j.properties文件的位置

然后 - >好的 - >运行

它应该加载

答案 1 :(得分:32)

IMO最安全的方式是指向运行/调试配置中的文件

-Dlog4j.configuration=file:mylogging.properties

!请注意:使用eclipse启动配置时,file:协议的规范是强制性的。

通过这种方式,记录器不会捕获以前在类路径中出现的任何logging.properties,也不会捕获JDK中的缺省值。

另外,考虑实际使用log4j.xml,它具有更丰富的表达式语法,并允许更多的东西(log4j.xml优先于log4j.properties。

答案 2 :(得分:12)

将log4j.properties文件添加到项目的运行时类路径中。 有些人将此添加到源树的根目录(以便将其复制到已编译类的根目录)。

修改 如果您的项目是maven项目, 你可以将log4j.properties放在src / main / resources文件夹中(以及用于单元测试的src / test / resources)。

如果您有多个环境(例如开发和生产), 想要为每个环境进行不同的记录 并希望将相同的jar(或war或ear)文件部署到每个环境 (在所有环境的一个版本中) 然后将log4j.properties文件存储在jar文件之外,并将其放在每个环境的类路径中(可由环境配置)。 从历史上看,我会在类路径中的每个环境中包含一些已知目录,并在那里部署特定于环境的东西。 例如, ~tomcat_user / localclasspath其中~tomcat_user是将运行我的war文件将部署到的tomcat实例的用户的主目录。

答案 3 :(得分:10)

最好的方法是创建名为resources的特殊源文件夹,并将其用于包括log4j.properties在内的所有资源。所以,就把它放在那里。

在动态Web项目自动创建的Java Resources文件夹中,右键单击并添加新的源文件夹并将其命名为“resources”。然后,此处的文件将导出到war文件中的classes目录

答案 4 :(得分:7)

如果您有一个库,并且想要附加log4j:

  1. 创建名为"资源"的文件夹。在您的项目中。
  2. 创建名为log4j
  3. 的.properties文件
  4. 在log4j.properties文件中设置属性
  5. 按下项目中的右键,转到属性 - > Java Build Path,最后转到" Source"标签。
  6. 按“添加”文件夹并搜索"资源"在步骤1中创建的文件夹。
  7. 完成。
  8. (我假设你已经添加了log4j库。)

    PD:抱歉我的英文。

答案 5 :(得分:4)

此问题已经回答here

类路径从不包含特定文件。它包括目录和jar文件。因此,将该文件放在classpath中的目录中。

Log4j属性(通常)不用于开发应用程序(除非您正在调试Eclipse本身!)。那么您真正想要构建可执行Java应用程序(Application,WAR,EAR或其他)并在运行时类路径中包含Log4j属性。

答案 6 :(得分:3)

log4j.properties放在运行时类路径中。

forum显示了一些有关可能的方法的帖子。

答案 7 :(得分:2)

一般情况下,我把它放在一个特殊的文件夹“res”或“资源已经说过,但是在Web应用程序之后,我将带有ant任务的log4j.properties复制到WEB-INF / classes目录。将文件放在src /文件夹的根目录下是一样的,但通常我更喜欢在专用文件夹中看到它。

使用Maven,通常放置的文件位于src/main/resources中的target/classes/文件夹中。 所有资源都将在根类路径中进行构建(例如{{1}})

如果你想要一个强大的记录器,你也可以查看other post这是一个记录器外观,并且可以使用后面的log4j实现。

答案 8 :(得分:1)

我发现log4j.properties文件的位置取决于Eclipse项目的类型。

具体来说,对于Eclipse动态Web项目,大多数涉及将log4j.properties添加到war文件的答案实际上并没有将属性文件添加到正确的位置,尤其是对于Tomcat / Apache。

以下是我的一些研究和我的问题解决方案(同样专门针对在Tomcat / Apache 6.0上运行的动态Web项目)

  • 请参阅本文,了解Tomcat如何加载类。它与Java的普通类加载器不同。 (https://www.mulesoft.com/tcat/tomcat-classpath)请注意,它只查看war文件中的两个位置,WEB-INF / classes和WEB-INF / lib。

  • 请注意,对于动态Web项目,将.properties文件存储在build /../ classes目录中是不明智的,因为每当您清理构建项目时都会擦除此目录。

  • Tomcat不处理WEB-INF / lib位置中的.property文件。

  • 您无法将log4j.properties文件存储在src目录中,因为Eclipse会将该目录从您的视图中抽象出来。

  • 我发现解决此问题的一种方法是更改​​构建并添加一个最终将加载到war文件中的WEB-INF / classes目录中的目录。具体地说....

(1)在项目浏览器中右键单击您的项目,选择“新建” - >“文件夹”。您可以将文件夹命名为任何名称,但本例中的标准是“资源”。新文件夹应出现在项目的根级别。

(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中。

(7)将您的项目推广到Tomcat / Apache,并注意log4j现在可以正常工作。

现在log4j正常工作,开始记录,解决世界问题,休息一段时间,享受美味的成人饮料。

答案 9 :(得分:1)

您不希望将log4j.properties与您的项目一起打包 - 这是一个坏主意,正如其他海报所提到的那样。

找到Eclipse在运行应用程序时指向的根Tomcat安装,并将log4j.properties文件添加到适当的位置。对于Tomcat 7,正确的位置是

$ {TOMCAT_HOME} / lib中