java启动时自定义配置文件路径,自定义log4j2.xml位置方式

 更新时间:2022年08月26日 17:01:05   作者:cy谭  
这篇文章主要介绍了java启动时自定义配置文件路径,自定义log4j2.xml位置方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

java启动时自定义配置文件路径,自定义log4j2.xml位置

启动时指定配置文件位置

项目打成jar包后,配置文件会一起打包到jar包的classes下,这就是所说的classpath。比如spring boot 就是在jar\BOOT-INF\classes下

然后在jar文件运行时,就会自动去jar文件内找配置文件,这对我们部署服务是不利的,通常都是将配置文件放在外面,方便修改配置内容。

有一种说法:说配置文件加载顺序为(由高到低)

  • jar包同级目录下的config文件夹下配置
  • jar包同级目录下配置
  • classpath下config目录下配置
  • classpath下配置

经验证

application.properties   或者 application.yml 是上面的加载顺序,但是我在搭建spring boot 项目时 【jar包同级目录下的config文件夹下配置】优先级是 > 【classpath下配置】,但是 【jar包同级目录下配置】优先级并没有【classpath下配置】的高。。不知为何。不过把配置文件放到  jar包同级目录下的config文件夹是能够解决需求的。

后来又发现一个问题

外部log4j2.xml 加载不到,不管是放在jar同级目录,还是jar包同级目录下的config,都不起作用,每次启动都加在 jar包内的log4j2.xml ,查了很多资料都说不到点上。

后面终于找到解决办法了,就是在启动jar文件的时候手动加载,如下(start.sh内容)

name="my-web"
pid=`ps -ef | grep ${name} | grep -v grep |awk '{print $2}'`
if [ $pid ]; then
    echo  ${name}  is  running pid=$pid
    kill -9 $pid
fi
nohup  java -Xms100m -Xmx100m  -jar ../${name}-0.0.1-SNAPSHOT.jar --logging.config=../config/log4j2.xml > ../logs/${name}.log & tail -f ../logs/${name}.log

就是加上 【--logging.config=config/log4j2.xml】 来制定加载的 log4j2.xml

如果启动不了

pom 可能没有加上依赖

<!--  日志依赖-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter</artifactId>
    <exclusions>
        <exclusion>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-logging</artifactId>
        </exclusion>
    </exclusions>
</dependency>
 
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>

最后附上整个文件的目录结构

my-web
----bin
    ----start.sh
    ----stop.sh
----config
    ----log4j2.xml
    ----application.yml
    ----application.properties
----logs
----my-web.jar

java服务启动指定配置文件路径

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Java 设计模式之适配器模式详解

    Java 设计模式之适配器模式详解

    设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性
    2021-11-11
  • Java并发系列之CyclicBarrier源码分析

    Java并发系列之CyclicBarrier源码分析

    这篇文章主要为大家详细分析了Java并发系列之CyclicBarrier源码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-03-03
  • java web项目实现文件下载实例代码

    java web项目实现文件下载实例代码

    现在项目里面有个需求,需要把系统产生的日志文件给下载到本地 先获取所有的日志文件列表,显示到界面,选择一个日志文件,把文件名传到后台
    2013-09-09
  • SpringBoot动态定时功能实现方案详解

    SpringBoot动态定时功能实现方案详解

    在SpringBoot项目中简单使用定时任务,不过由于要借助cron表达式且都提前定义好放在配置文件里,不能在项目运行中动态修改任务执行时间,实在不太灵活。现在我们就来实现可以动态修改cron表达式的定时任务,感兴趣的可以了解一下
    2022-11-11
  • 详解MybatisPlus3.4版本之后分页插件的使用

    详解MybatisPlus3.4版本之后分页插件的使用

    从Mybatis Plus 3.4.0版本开始,不再使用旧版本的PaginationInterceptor ,而是使用MybatisPlusInterceptor。本文就详细的介绍一下两者的区别,感兴趣的可以了解一下
    2021-11-11
  • Spring Boot整合mybatis并自动生成mapper和实体实例解析

    Spring Boot整合mybatis并自动生成mapper和实体实例解析

    本文是小编给大家总结的关于Spring Boot整合mybatis并自动生成mapper和实体的内容,非常不错,具有一定的参考借鉴价值,需要的朋友参考下吧
    2018-05-05
  • SpringBoot在自定义类中调用service层mapper层方式

    SpringBoot在自定义类中调用service层mapper层方式

    这篇文章主要介绍了SpringBoot在自定义类中调用service层mapper层方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-03-03
  • java递归读取目录下所有文件的方法

    java递归读取目录下所有文件的方法

    这篇文章主要为大家详细介绍了java递归读取目录下所有文件的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-02-02
  • Spring Cloud原理以及核心组件详解

    Spring Cloud原理以及核心组件详解

    这篇文章主要介绍了Spring Cloud原理以及核心组件详解,spring cloud有5个核心组件,文章中进行了一一的详细介绍,需要的朋友可以参考下
    2023-03-03
  • HttpClient 请求 URL字符集转码问题

    HttpClient 请求 URL字符集转码问题

    这篇文章主要介绍了HttpClient 请求 URL字符集转码问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-01-01

最新评论