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

目录
  • java启动时自定义配置文件路径,自定义log4j2.xml位置
    • 启动时指定配置文件位置
    • 有一种说法:说配置文件加载顺序为(由高到低)
    • 经验证
    • 后来又发现一个问题
    • 如果启动不了
  • java服务启动指定配置文件路径

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服务启动指定配置文件路径

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

(0)

相关推荐

  • springboot jar包外置配置文件的解决方法

    为什么要搞个解决方案呢?按照网上教程,spring boot项目中,配置文件有优先级,其中,放在根目录下的config文件夹中优先级最高:根目录下次之:然后是resources/config/:resources/下优先级最低.而加载顺序刚好反过来,resources/下最先加载,而/config/最后加载.然后在命令行方式下,指定一下这个配置文件的路径,就可以了,云云. 也许事实就是如此的吧,但我试来试去,总不成功,系统死活都要读resources/下,这个优先级最低的配置文件. 这对于用 j

  • Springboot引用外部配置文件的方法步骤

    现在的项目越来越多的都是打包成jar运行尤其是springboot项目,这时候配置文件如果一直放在项目中,每次进行简单的修改时总会有些不方便,这里我们看下打包成jar之后,从外部配置文件中读取配置信息. 首先想到的是通过java代码读取外边某个路径下的文件,但是开始做之后发现好多问题.后来又找其它解决方案,正好搜到一种简单的解决方式: java -jar demo.jar --Dspring.config.location=myapplication.properties 这样就可以通过@val

  • SpringBoot读取外部配置文件的方法

    1.SpringBoot配置文件 SpringBoot使用一个以application命名的配置文件作为默认的全局配置文件.支持properties后缀结尾的配置文件或者以yml/yaml后缀结尾的YAML的文件配置. 以设置应用端口为例 properties文件示例(application.properties): server.port=80 YAML文件示例(application.yml): server: port: 80 在properties和yml/yaml配置文件同时存在的情况

  • Spring Boot 指定外部启动配置文件详解

    目录 使用spring boot默认的配置文件路径 指定外部的配置文件 特定配置 总结 默认的打包spring boot项目会把配置文件打到jar包中,有时候在测试时需要想修改某些配置项.这时除了可以用启动参数覆盖配置项以外,还可以指定外部的配置文件覆盖已有配置文件.在需要修改较多配置参数的时候会很方便. 使用spring boot默认的配置文件路径 默认的查找路径如下: 1.file:./config/ 2.file:./ 3.classpath:/config/ 4.classpath:/

  • Spring Boot打jar包后配置文件的外部优化配置方法

    在未进行任何处理的情况下,Spring Boot会默认使用项目中的 application.properties 或者 application.yml 来读取项目所需配置. 我这里只记录几种自己所用到的. 访问命令行属性 在默认的情况下, SpringApplication 会将任何命令行选项参数(以 - 开头 --server.port=9000)转换为 property 并添加到Spring环境当中. 例如,启动项目的时候指定端口: java -jar analysis-speech-too

  • springboot 运行 jar 包读取外部配置文件的问题

    案例:本文主要描述linux系统执行jar包读取jar包同级目录的外部配置文件 方法一:相对路径设置配置文件 (1)在jar包同级目录创建配置文件conf.properties并写入配置数据: confData=data (2)开始写入自动化测试代码 //from www.fhadmin.cn public class Test{ public String getData() throws IOException { //读取配置文件 Properties properties = new P

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

    目录 java启动时自定义配置文件路径,自定义log4j2.xml位置 启动时指定配置文件位置 有一种说法:说配置文件加载顺序为(由高到低) 经验证 后来又发现一个问题 如果启动不了 java服务启动指定配置文件路径 java启动时自定义配置文件路径,自定义log4j2.xml位置 启动时指定配置文件位置 项目打成jar包后,配置文件会一起打包到jar包的classes下,这就是所说的classpath.比如spring boot 就是在jar\BOOT-INF\classes下 然后在jar文

  • Spring Boot 在启动时进行配置文件加解密

    寻找到application.yml的读取的操作. 从spring.factories 中查看到 # Application Listeners org.springframework.context.ApplicationListener=\ org.springframework.boot.context.config.ConfigFileApplicationListener,\ ConfigFileApplicationListener 该对象对application.yml进行读取操作

  • Spring Boot 在启动时进行配置文件加解密的方法详解

    寻找到application.yml的读取的操作. 从spring.factories 中查看到 # Application Listeners org.springframework.context.ApplicationListener=\ org.springframework.boot.context.config.ConfigFileApplicationListener,\ ConfigFileApplicationListener 该对象对application.yml进行读取操作

  • SpringBoot启动时自动执行代码的几种实现方式

    目录 前言 java自身的启动时加载方式 static代码块 构造方法 Spring启动时加载方式 代码测试 总结 前言 目前开发的SpringBoot项目在启动的时候需要预加载一些资源.而如何实现启动过程中执行代码,或启动成功后执行,是有很多种方式可以选择,我们可以在static代码块中实现,也可以在构造方法里实现,也可以使用@PostConstruct注解实现. 当然也可以去实现Spring的ApplicationRunner与CommandLineRunner接口去实现启动后运行的功能.在

  • Java四舍五入时保留指定小数位数的五种方式

    方式一: double f = 3.1516; BigDecimal b = new BigDecimal(f); double f1 = b.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(); 输出结果f1为 3.15: 源码解读: public BigDecimal setScale(int newScale, int roundingMode) //int newScale 为小数点后保留的位数, int roundingMode 为变

  • 自定义log4j.properties的加载位置方式

    目录 自定义log4j.properties加载位置 方法一 方法二 方法三 log4j.properties自定义路径 在web.xml 下面配这些参数 自定义log4j.properties加载位置 方法一 在main函数中添加如下代码 public class App { static final Logger logger = Logger.getLogger(App.class); public static void main( String[] args ) { PropertyC

  • SpringBoot框架配置文件路径设置方式

    目录 SpringBoot配置文件路径设置 自定义配置文件路径以及多profile配置文件 一.什么是classpath 二.自定义springboot配置文件路径 三.多 profiles 配置文件的切换 SpringBoot配置文件路径设置 选择"Edit Configurations": 下springboot启动配置中修改VM options的值: 值参考: -Dspring.config.location=E:/workspace/xxxx/application.yml -

  • 如何修改logback.xml配置文件在resource以外的位置

    因为spring搭建的web项目打包时默认将resource文件夹下的文件一起打包,但是我们又想在打包后修改某些配置 这里以我遇到的logback.xml配置更改默认路径来看 根据LoggerFactory.getLogger的方法找到加载文件的位置,如下 public URL findURLOfDefaultConfigurationFile(boolean updateStatus) { ClassLoader myClassLoader = Loader.getClassLoaderOfO

  • 使用log4j2自定义配置文件位置和文件名(附log4j2.xml配置实例)

    目录 log4j2自定义配置文件位置和文件名 web.xml配置 生效配置文件 日志配置文件实例 log4j2.xml配置及例子 1.使用log4j2需要下载包 2.配置文件可以有三种格式 3.日志记录有两种方法 4.我用的xml的配置 log4j2自定义配置文件位置和文件名 我们使用log4j2一般做法是将log4j2.xml文件放在资源文件夹根目录.对于有强迫症的开发者来说,我更喜欢在资源文件夹下新建包或文件夹,然后把配置文件放在里面.本博客将介绍如何自定义log4j2.xml文件的位置和文

  • springboot读取自定义配置文件时出现乱码解决方案

    目录 网上提供的解决方案也不外乎这几种 方案一 方案二 方案三 方案四 方案五 方案六 这是入门的第三天了,从简单的hello spring开始,已经慢慢接近web的样子.接下来当然是读取简单的对象属性了. 于是按照网上各位大神教的,简单写了个对象book,其他配置不需要做任何改动. package com.example.bean; import org.springframework.beans.factory.annotation.Value; import org.springframe

随机推荐