问题
使用传统的Maven目录时,我应该在哪里放置log4j.properties文件?
#1 热门回答(125 赞)
src/main/resources
是此的"标准安置"。
**更新:**以上回答了这个问题,但它并不是最好的解决方案。查看其他答案和对此的评论......你可能不会使用jar发送自己的日志记录属性,而是将其留给客户端(例如app-server,stage environment等)来配置所需的日志记录。因此,将其放入src/test/resources
是我的首选解决方案。
**注意:**如果要将具体日志配置保留给客户端/用户,则应考虑在应用程序中替换log4j
withslf4j
。
#2 热门回答(50 赞)
只需将它放入内容即可将其捆绑在内部。例如。如果你的工件是一个JAR,你将在其中包含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来创建它。在该插件中,你可以通过添加如下所示的Class-Path
manifest条目将JAR的当前文件夹添加到类路径:
<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
tab,选择Advanced
并浏览到你的src/resources
目录。
#3 热门回答(23 赞)
一些"数据挖掘"帐户为src/main/resources
是典型的地方。
- src / main / resources / log4j.properties:4877
- src / main / java / log4j.properties:215