我的Eclipse项目中应该添加log4j.properties
文件以使其按预期工作?
答案 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:
(我假设你已经添加了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中