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:
- 在你的projet中创build一个名为“resources”的文件夹。
- 创build一个名为log4j的.properties文件
- 在log4j.properties文件中设置属性
- 在项目中按下右键,进入properties-> Java Build Path,最后进入“Source”选项卡。
- 按“添加”文件夹并search在步骤1中创build的“资源”文件夹。
- 完。
(我假设你已经添加了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目录