Log4j.properties在Eclipse项目中的正确位置在哪里?

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

你可以在任何你想要的地方添加它,当你运行你的项目,configuration类path,并通过点击添加log4j.properties文件的位置:运行 – >运行configuration – > [类path选项卡] – >点击用户条目 – >高级 – >select添加文件夹 – >select你的log4j.properties文件的位置

然后 – >确定 – >运行

它应该被加载

IMO最安全的方式就是在运行/debuggingconfiguration中指向文件

 -Dlog4j.configuration=file:mylogging.properties 

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

通过这种方式,logging器将不会捕获类path中的任何logging.properties,也不会捕获JDK中的缺省值。

另外,请考虑实际使用具有更丰富的expression式语法的log4j.xml,并允许更多的事情(log4j.xml优先于log4j.properties。

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

编辑:如果你的项目是一个maven项目,你可以把log4j.properties放在src / main / resources文件夹(和你的unit testing的src / test / resources)中。

如果您有多个环境(例如开发和生产),为每个环境需要不同的日志logging,并且想要将相同的jar(或war或ear)文件部署到每个环境中log4j.properties文件放在jar文件的外面,并放在每个环境的类path中(可由环境configuration)。 从历史上看,我会在类path中的每个环境中包含一些已知的目录,并在那里部署环境特定的东西。 例如,〜tomcat_user / localclasspath其中〜tomcat_user是用户的主目录,将运行我的war文件将部署到的tomcat实例。

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

在由Dynamic Web Project自动创build的Java Resources文件夹中,右键单击并添加一个新的源文件夹并将其命名为“resources”。 这里的文件将被导出到war文件到classes目录

log4j.properties放入运行时类path中。

http://www.coderanch.com/t/106042/vc/Eclipse-add-log-properties-classpath

这个问题已经在这里回答

类path从不包含特定的文件。 它包括目录和jar文件。 所以,把这个文件放在你的classpath中的一个目录中。

Log4j属性不是(通常)用于开发应用程序(除非你正在debuggingEclipse本身!)。 所以你真正想要构build可执行的Java应用程序(Application,WAR,EAR或其他),并在运行时类path中包含Log4j属性。

如果你有一个库,你想追加log4j:

  1. 在你的projet中创build一个名为“resources”的文件夹。
  2. 创build一个名为log4j的.properties文件
  3. 在log4j.properties文件中设置属性
  4. 在项目中按下右键,进入properties-> Java Build Path,最后进入“Source”选项卡。
  5. 按“添加”文件夹并search在步骤1中创build的“资源”文件夹。
  6. 完。

(我假设你已经添加了log4j库。)

PD:对不起,我的英语。

一般情况下,我把它放在一个特殊的文件夹“res”或“resources”中,但是在web应用程序之后,我将log4j.properties和ant任务复制到WEB-INF / classes目录下,就像让文件在src /文件夹的根目录下,但通常我更喜欢在专门的文件夹中看到它。

有了Maven,通常的地方放在文件夹src/main/resources就像在这篇文章中回答的那样。 那里的所有资源都会转到你的根类path中(例如target/classes/

如果你想要一个强大的logging器,你也可以看看slf4j库 ,它是一个logging器外观,可以使用后面的log4j实现。

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

具体而言,对于EclipsedynamicWeb项目,大多数涉及将war4j.properties添加到war文件的答案实际上并没有将属性文件添加到正确的位置,特别是对于Tomcat / Apache。

这里是我的一些研究和解决scheme(也是专门针对运行在Tomcat / Apache 6.0上的dynamicWeb项目)

  • 请参考这篇关于Tomcat如何加载类的文章。 这与Java的普通类加载器不同。 ( https://www.mulesoft.com/tcat/tomcat-classpath )请注意,它只在war文件的两个地方WEB-INF / classes和WEB-INF / lib中查找。

  • 请注意,对于dynamicWeb项目,将.properties文件存储在build /../ classes目录中并不明智,因为无论何时清理构build项目,都会擦除该目录。

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

  • 您不能将log4j.properties文件存储在src目录中,因为Eclipse会将该目录从您的视图中提取出来。

  • 我发现解决这个问题的方法之一是修改构build并添加一个额外的目录,最终将加载到war文件的WEB-INF / classes目录中。 特别….

(1)右键单击项目浏览器中的项目,select“新build” – >“文件夹”。 您可以命名文件夹任何东西,但在这种情况下的标准是'资源'。 新文件夹应显示在项目的根目录下。

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

(3)再次右键单击项目,select“Build-Path” – >“Configure Build Path”。 select“来源”选项卡。 点击“添加文件夹”button。 浏览find您在上面的步骤(1)中创build的新文件夹。 select“确定”。

(4)一旦回到eclipse Project Explorer视图,请注意文件夹现在已经移动到'Java Resources'区域(即由于eclipse演示抽象,它不再位于根目录)。

(5)清理build立你的项目。

(6)为了validation.properties文件现在存在于war文件的WEB-INF / classes中,将war文件导出到一个简单的位置(右键点击Project – > Export – > War file)并签出内容。 请注意,log4j.properties文件现在出现在WEB-INF / classes中。

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

现在log4j正常工作,开始logging,解决世界性问题,rest一下,享受美味的成人饮料。

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

findEclipse在运行应用程序时指向的Tomcat根目录安装,然后将log4j.properties文件添加到那里。 对于Tomcat 7,正确的地方是

$ {} TOMCAT_HOME / lib目录