如果使用maven,通常你把log4j.properties放在java或资源下?
2022-08-31 08:05:40
使用传统的 Maven 目录时,我应该将 log4j.properties 文件放在哪里?
使用传统的 Maven 目录时,我应该将 log4j.properties 文件放在哪里?
src/main/resources
是其中的“标准放置”。
更新:以上回答了这个问题,但它不是最好的解决方案。查看其他答案和对此的评论...您可能不会随 jar 一起提供自己的日志记录属性,而是将其留给客户端(例如应用服务器、暂存环境等)来配置所需的日志记录。因此,将其放入是我的首选解决方案。src/test/resources
注意:说到将具体的日志配置留给客户端/用户,您应该考虑在应用中替换。log4j
slf4j
只需将其放入即可将其捆绑在工件中。例如,如果你的工件是一个JAR,你将有文件在其中,失去其使日志记录可配置的初始点。src/main/resources
log4j.properties
我通常把它放进去,并把它设置为输出到目标,如下所示:src/main/resources
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<targetPath>${project.build.directory}</targetPath>
<includes>
<include>log4j.properties</include>
</includes>
</resource>
</resources>
</build>
此外,为了使log4j真正看到它,您必须将输出目录添加到类路径中。如果你的工件是一个可执行的JAR,你可能使用了maven-assembly-plugin来创建它。在该插件中,您可以通过添加清单条目将JAR的当前文件夹添加到类路径中,如下所示:Class-Path
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<archive>
<manifest>
<mainClass>com.your-package.Main</mainClass>
</manifest>
<manifestEntries>
<Class-Path>.</Class-Path>
</manifestEntries>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
<executions>
<execution>
<id>make-assembly</id> <!-- this is used for inheritance merges -->
<phase>package</phase> <!-- bind to the packaging phase -->
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
现在,log4j.properties 文件将紧挨着 JAR 文件,可独立配置。
要直接从 Eclipse 运行应用程序,请将该目录添加到运行配置的类路径中:选择选项卡,选择并浏览到您的目录。resources
Run->Run Configurations...->Java Application->New
Classpath
Advanced
src/resources