如果使用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->New
selectClasspath
选项卡,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);
- 服务器/数据库configuration文件,包括密码,应该存储在源代码pipe理中吗?
- 典型的./configure在Linux中有什么作用?
- 如何从其他计算机接受ipython的连接?
- 构build设置使用UUID指定供应configuration文件
- 用户的Subversionconfiguration文件在主要操作系统上存储在哪里?
- 查询参数(postgresql.conf设置),如“max_connections”
- Xcode 4 – 在新的Macintosh安装上设置configuration文件时出现“找不到有效的签名标识”错误
- 如何使用记事本++(或其他)与msysgit?
- 如何添加configuration到Xcode?