如果使用maven,通常你把java或资源下的log4j.properties?

在使用传统的Maven目录时,我应该在哪里放置log4j.properties文件?

src/main/resources是这个的“标准放置”。

更新:上述回答的问题,但它不是最好的解决scheme。 看看其他的答案和对此的评论…你可能不会用jar发布自己的日志logging属性,而是把它留给客户端(例如app-server,stage environment等)来configuration所需的日志logging。 因此,把它放在src/test/resources是我的首选解决scheme。

注意:说到把具体的日志configuration留给客户端/用户,你应该考虑用你的应用中的slf4j代替log4j

只要把它放在src/main/resources就可以将它捆绑到工件中。 例如,如果您的工件是JAR,那么您将在其中包含log4j.properties文件,从而失去了使日志可configuration的初始点。

我通常把它放在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真正看到它,你必须将输出目录添加到类path中。 如果您的工件是可执行JAR,那么您可能使用了maven-assembly-plugin来创build它。 在这个插件里面,你可以通过添加一个Class-Path清单条目来将JAR的当前文件夹添加到类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文件,可独立configuration。

要直接从Eclipse运行应用程序,请在运行configuration中将resources目录添加到类path中: Run->Run Configurations...->Java Application->NewselectClasspath选项卡,selectAdvanced并浏览到您的src/resources目录。

一些“数据挖掘”帐户是src/main/resources是典型的地方。

Google代码search结果:

  • src/main/resources/log4j.properties
  • src/main/java/log4j.properties

用于初始化项目的资源最好放在src / main / resources文件夹中。 为了在构build期间启用这些资源的加载,可以简单地在maven项目的pom.xml中添加条目作为构build资源

 <build> <resources> <resource> <directory>src/main/resources</directory> <filtering>true</filtering> </resource> </resources> </build> 

其他.properties文件也可以保存在这个文件夹中用于初始化。 如果要在资源文件夹的属性文件中包含一些variables,并将其从configuration文件filter属性文件中填充,那么过滤设置为true,这些文件保存在设置为configuration文件的 src / main / filters中,但它是完全不同的用例。 现在,你可以忽略它们。

这是一个很好的资源maven资源插件 ,这很有用,只是浏览其他部分。

将资源文件放在另一个位置不是您可以使用的最佳解决scheme:

 <build> <resources> <resource> <directory>src/main/java</directory> <excludes> <exclude>**/*.java</exclude> </excludes> </resource> </resources> <build> 

例如,当资源文件(例如jaxb.properties)与Java类一起进入包内部时。

如果在src / main / resources下找不到log4j.properties或log4j.xml文件,则使用此PropertyConfigurator.configure(“log4j.xml”);

  PropertyConfigurator.configure("log4j.xml"); Logger logger = LoggerFactory.getLogger(MyClass.class); logger.error(message);