在我的 Eclipse 项目中,我应该将 log4j.properties
文件添加到哪个位置才能使它按照预期工作?
log4j.properties
引用放在了位于/org/example/mylibrary/log4j.properties
的库中。这样一来,我的库用户就不会自动捕获它,但是如果他们的JVM配置了-Dlog4j.configuration=...
,或者至少可以作为他们自己的log4j.properties
的参考,仍然可以使用它。 - Jaime Hablutzel在我看来,最安全的方法是在运行/调试配置中指向该文件。
-Dlog4j.configuration=file:mylogging.properties
注意:使用Eclipse启动配置时,必须指定file:
协议。
这样记录器将无法捕获类路径中先前出现的任何logging.properties或JDK中的默认日志记录属性。
此外,请考虑实际使用log4j.xml,它具有更丰富的表达式语法,并允许更多内容(log4j.xml优先于log4j.properties)。
将log4j.properties文件添加到项目的运行时类路径中。 有些人会将其添加到源代码树的根目录下(这样它会被复制到编译后的类的根目录)。
编辑: 如果您的项目是Maven项目, 您可以将log4j.properties放在src/main/resources文件夹中(并且src/test/resources用于单元测试)。
如果您有多个环境(例如开发和生产环境), 需要为每个环境设置不同的日志记录, 并且希望将相同的jar(或war或ear)文件部署到每个环境中 (例如一个构建适用于所有环境), 那么请将log4j.properties文件存储在jar文件之外,并将其放置在每个环境的类路径中(可以通过环境进行配置)。 历史上,我会在类路径中包含一些已知的目录,并在那里部署特定于环境的内容。 例如, ~tomcat_user/localclasspath,其中~tomcat_user是将运行我的war文件的tomcat实例的用户的主目录。
最好的方法是创建一个名为resources
的特殊源文件夹,并将其用于所有资源,包括log4j.properties。所以,只需把它放在那里。
在动态Web项目自动创建的Java资源文件夹上,右键单击并添加一个新的源文件夹,并将其命名为“resources”。然后,这里的文件将被导出到war文件的classes目录中。
classpath
中的目录中。
Log4j
属性通常不用于开发应用程序(除非你正在调试Eclipse本身!)。所以你真正想要的是构建可执行的Java应用程序(应用程序、WAR、EAR或其他),并将Log4j
属性包含在运行时类路径中。将log4j.properties
放在运行时类路径中。
这个论坛展示了一些关于可能的方法。
(1) 在项目资源管理器中右键单击您的项目,选择“新建”->“文件夹”。您可以将文件夹命名为任何名称,但在此情况下的标准名称是“resources”。新文件夹应出现在您的项目根目录中。
(2) 将log4j.properties文件移动到这个新文件夹中。
(3) 再次右键单击项目,选择“构建路径”- >“配置构建路径”。选择“源”选项卡。单击“添加文件夹”按钮。浏览以找到您在步骤(1)中创建的新文件夹。选择“确定”。
(4) 回到Eclipse项目资源管理器视图后,请注意该文件夹现已移至“Java资源”区域(即由于Eclipse演示抽象而不再位于根目录)。
(5) 清理并构建您的项目。
(6) 为了验证.properties文件现在存在于您的war文件的WEB-INF / classes中,请将war文件导出到易于访问的位置(右键单击项目 - >导出 - >War文件),并检查其内容。请注意,log4j.properties文件现在出现在WEB-INF / classes中。
(7) 将您的项目推广到Tomcat / Apache,并注意log4j现在正在运行。
现在log4j已经可用,开始记录日志,解决世界问题,休息一下,享受美味的成人饮料。您不希望将log4j.properties与您的项目部署包一起打包--这是一个坏主意,正如其他发帖者所提到的。
找到Eclipse运行您的应用程序时指向的根Tomcat安装位置,并在那里的正确位置添加log4j.properties文件。对于Tomcat 7,正确的位置是
${TOMCAT_HOME}/lib