温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

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

发布时间:2022-08-27 11:34:06 来源:亿速云 阅读:185 作者:iii 栏目:开发技术

本文小编为大家详细介绍“java启动时怎么自定义配置文件路径和log4j2.xml位置”,内容详细,步骤清晰,细节处理妥当,希望这篇“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启动时怎么自定义配置文件路径和log4j2.xml位置

    读到这里,这篇“java启动时怎么自定义配置文件路径和log4j2.xml位置”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注亿速云行业资讯频道。

    向AI问一下细节

    免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

    AI