指定log4j2配置文件打包位置

一.简介

构建Maven项目的时候,如果没有进行特殊的配置,Maven会按照标准的目录结构查找和处理各种类型文件。

src/main/java这个目录中的所有*.java文件会分别在comile和test-comiple阶段被编译,编译结果分别放到了target/classes目录中。

但是src/main/resouces这个目录中的其他文件都会被忽略掉,这个目录中的文件会被复制到target/classes目录中。

打包插件默认会把target/classes这个目录中的所有内容打入到jar包或者war包中。

二.实现效果

把配置文件放在指定位置

启动时修改指定位置的配置文件

重启项目配置文件就可以生效。

三.log4j2为例实现步骤

(1)防止启动时使用了打包到jar包的配置文件 在打包时指定 不把log4j2配置文件打包到jar

<build>
   <finalName>api</finalName>
   <resources>
      <resource>
         <directory>${basedir}/src/main/resources</directory>
         <excludes>
            <exclude>log4j2.xml</exclude>
         </excludes>
      </resource>
   </resources>
</build>

(2)将log4j2配置文件放在指定位置

    <build>           
        <plugin>                
            <artifactId>maven-resources-plugin</artifactId>               
            <version>2.7</version>             
            <executions>                    
                <execution>                       
                    <id>copy-res</id>                       
                    <phase>validate</phase>                     
                    <goals>                            
                        <goal>copy-resources</goal>                        
                    </goals>                 
                    <configuration>                           
                        <outputDirectory>${basedir}</outputDirectory>                       
                        <resources>                               
                            <resource>                                   
                                <directory>${basedir}/src/main/resources</directory>
                                <!-- 指定需要处理的资源 -->                                   
                                <includes>                                        
                                    <include>log4j2.xml</include>                                    
                                </includes>                                 
                                <filtering>false</filtering>                             
                            </resource>                            
                        </resources>                        
                    </configuration>                    
                </execution>
                <!-- <execution> -->
                    <!-- 处理多个资源 -->
                <!-- </execution> -->                
            </executions>            
        </plugin>
    </build>

(3)启动脚本 使用-Dlog4j.configurationFile=./log4j2.xml设置找配置文件的位置

nohup java -XX:+UseConcMarkSweepGC -Xmx2048m -Xms1024m  -XX:+PrintGCDateStamps -XX:+PrintGCDetails  -Xloggc:./logs/java_gc.log  -XX:-HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=./logs/ -Dfile.encoding=UTF-8 -Dsun.jnu.encoding=UTF-8 -Dlog4j.configurationFile=./log4j2.xml -jar api.jar --spring.profiles.active=${confName} --isJar=true > nohup.out & > /dev/null 2>&1 &

网上的资料显示 启动时会默认找jar包的/classes目录中找配置文件 找不到会找jar包同级目录下的配置文件 我把配置放在jar同级目录会报错 

ERROR StatusLogger No log4j2 configuration file found. 
Using default configuration: logging only errors to the console.

需要使用-Dlog4j.configurationFile=./log4j2.xml设置找配置文件的位置 才能正确生效。已经指定配置加载位置,可以不要步骤(1)

(4)启动命令直接使用nohup java -cp 代替 nohup java -jar 。使用-cp 和 -classpath 一样,用来统一指定配置路径,打包时先排除默认的配置文件 不然两个配置文件 可能会随机加载一个

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值