广告
返回顶部
首页 > 资讯 > 精选 >怎么对logback.xml配置文件在resource外的位置进行修改
  • 815
分享到

怎么对logback.xml配置文件在resource外的位置进行修改

2023-06-06 14:06:42 815人浏览 泡泡鱼
摘要

怎么对logback.xml配置文件在resource外的位置进行修改?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。根据LoggerFactory.getLog

怎么对logback.xml配置文件在resource外的位置进行修改?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

根据LoggerFactory.getLogger的方法找到加载文件的位置,如下

 public URL findURLOfDefaultConfigurationFile(boolean updateStatus) { ClassLoader myClassLoader = Loader.getClassLoaderOfObject(this); URL url = findConfigFileURLFromSystemProperties(myClassLoader, updateStatus); if (url != null) {  return url; } url = getResource(TEST_AUTOCONFIG_FILE, myClassLoader, updateStatus); if (url != null) {  return url; } url = getResource(GROOVY_AUTOCONFIG_FILE, myClassLoader, updateStatus); if (url != null) {  return url; } return getResource(AUTOCONFIG_FILE, myClassLoader, updateStatus); }

可以看出是根据顺序依次往下寻找配置文件位置,在该类的属性中定义了对应的变量值如下

public class ContextInitializer { final public static String GROOVY_AUTOCONFIG_FILE = "logback.groovy"; final public static String AUTOCONFIG_FILE = "logback.xml"; final public static String TEST_AUTOCONFIG_FILE = "logback-test.xml"; final public static String CONFIG_FILE_PROPERTY = "logback.configurationFile";

具体加载顺序参照静态变量上面代码块的查找顺序

那么我们想修改配置文件位置,只需找到第一个加载的方法中是如何加载的,因为后面加载文件的位置都是代码默认写死了的

可以看到上面代码块中,最先加载的代码块是

 URL url = findConfigFileURLFromSystemProperties(myClassLoader, updateStatus); if (url != null) {  return url; }

点进去之后可以看到

private URL findConfigFileURLFromSystemProperties(ClassLoader classLoader, boolean updateStatus) { String logbackConfigFile = OptionHelper.getSystemProperty(CONFIG_FILE_PROPERTY);

这里可以看到OptionHelper.getSystemProperty(CONFIG_FILE_PROPERTY)传入的是静态变量中的

final public static String CONFIG_FILE_PROPERTY = "logback.configurationFile";</div><div>OptionHelper.getSystemProperty中的内容是</div> public static String getSystemProperty(String key) { try {  return System.getProperty(key); } catch (SecurityException e) {  return null; } }

可以看出是从 System.getProperty()中获取的,而key是静态变量。

所以我们只要在系统启动时,设置一个System.setProperty()就可以了,如下

这一步设置配置文件路径

private static final Logger log; static { System.setProperty("logback.configurationFile","./logback.xml"); log = LoggerFactory.getLogger(MonitorApplication.class); }

就是根据代码里定义的key,传一个文件路径的value到System的Peoperty里

提示:此方式与@Slf4j一起使用时,在设置 System.setProperty()代码块之前就加载的类中不适用,因为此时还未设置文件位置,但是静态常量就已经被加载赋值了,比如下面我在main方法中这么定义,main方法中的日志将失去配置文件效果

private static final Logger log = LoggerFactory.getLogger(MonitorApplication.class);; static { System.setProperty("logback.configurationFile","./logback.xml"); } public static void main(String[] args) {}

因为如果在定义时就赋值,那么JVM是先加载 静态属性,然后在执行静态代码块的,所以导致System.setProperty()赋值在 log变量赋值以后执行,那么设置的文件位置也就不生效了

@Slf4j注解也一样,@Slf4j注解后生成的class是下面这样的:

public class MonitorApplication { private static final Logger log = LoggerFactory.getLogger(MonitorApplication.class);

所以我们可以选择下面这中jvm启动时带的参数

怎么对logback.xml配置文件在resource外的位置进行修改

打包后的控制台启动设置参数可以百度一下,下面是我打包后控制台启动的参数设置例子

怎么对logback.xml配置文件在resource外的位置进行修改

java -Dlogback.configurationFile=./logback.xml -jar monitor-1.0-SNAPSHOT.jar

补充:springboot打包去除资源文件,启动时指定配置文件位置,使用log4j2替换默认logback

SpringBoot打包时,去掉资源文件

<build> <resources>  <resource>  <directory>src/main/resources</directory>  <excludes>   <exclude>*.properties</exclude>   <exclude>*.xml</exclude>  </excludes>  </resource> </resources> <plugins>  <plugin>  <groupId>org.springframework.boot</groupId>  <artifactId>spring-boot-Maven-plugin</artifactId>  </plugin>    <plugin>  <groupId>org.apache.maven.plugins</groupId>   <artifactId>maven-surefire-plugin</artifactId>   <configuration>    <skipTests>true</skipTests>   </configuration>  </plugin> </plugins> </build>

但这样配置后,在eclipse中启动springboot项目,则会出现读取不到配置资源的情况,所以在eclipse启动项目时,需要注释掉如下配置

<resources> <resource>  <directory>src/main/resources</directory>  <excludes>   <exclude>*.properties</exclude>   <exclude>*.xml</exclude>  </excludes> </resource></resources>

如果修改了pom文件之后,程序运行异常,如果使用eclipse,则可通过右键Maven -- Update Project更新下maven依赖,再次启动服务

启动时指定配置文件位置

项目打成jar包后,运行时,可将配置文件放入jar包同级目录下或者在同级的config目录下(放入classpath下或者classpath下config目录下也可以,但是打成jar包,就需要一起打包出来)

配置文件加载顺序为:

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

jar包同级目录下配置

classpath下config目录下配置

classpath下配置

java -Xms100m -Xmx100m -jar myboot001-0.0.1-SNAPSHOT.jar &

也可指定加载配置文件的地址

java -Xms100m -Xmx100m -jar myboot001-0.0.1-SNAPSHOT.jar --spring.config.location=configs/application.properties --logging.config=./log4j2.xml >> /dev/null 2>&1 &

以DEBUG方式启动

java -Xms100m -Xmx100m -jar myboot001-0.0.1-SNAPSHOT.jar --spring.config.location=configs/application.properties --debug

使用log4j2替换默认日志框架logback

添加log4j2日志框架依赖

<dependency>  <groupId>org.springframework.boot</groupId>  <artifactId>spring-boot-starter-log4j2</artifactId></dependency>

此时启动服务时,将会有如下提示

怎么对logback.xml配置文件在resource外的位置进行修改

从日志记录看,依然使用的为logback日志,网上搜索了一些资料得知,需要排除掉默认的日志框架才会生效

本例使用了两个spring-boot-starter-data-redis和spring-boot-starter-jdbc依赖,且它们也都有日志框架的依赖,排除默认框架时,只需将写在最前面的starter依赖中添加排除默认日志框架的代码即可

<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-Redis</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-jdbc</artifactId></dependency>

或者添加如下依赖处理(位置不限)

 <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>

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注编程网精选频道,感谢您对编程网的支持。

--结束END--

本文标题: 怎么对logback.xml配置文件在resource外的位置进行修改

本文链接: https://www.lsjlt.com/news/247469.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 怎么对logback.xml配置文件在resource外的位置进行修改
    怎么对logback.xml配置文件在resource外的位置进行修改?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。根据LoggerFactory.getLog...
    99+
    2023-06-06
  • 怎么在Nginx中对HTTPS nginx.config文件进行配置
    今天就跟大家聊聊有关怎么在Nginx中对HTTPS nginx.config文件进行配置,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。目录位置:/usr/local/www/ngin...
    99+
    2023-06-08
  • 怎么对Spring Boot配置文件进行多环境配置
    这期内容当中小编将会给大家带来有关怎么对Spring Boot配置文件进行多环境配置,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。一. 多环境配置的好处:不同环境配置可以配置不同的参数~便于部署,提高效率...
    99+
    2023-05-31
    springboot spring boo bo
  • Linux下通过sed命令对kv方式的配置文件进行修改
    sed是unix下的面向字符流的编辑器,即stream editor, 它是面向行的,以行为单位进行处理,同时,sed是非交互式的,一旦执行便要处理完整个文件。 日常后台服务配置文件多以key-value的方式存在,例如...
    99+
    2022-06-04
    sed 配置文件修改 linux sed 命令
  • 怎么在SpringBoot 配置文件进行加密
    本篇文章为大家展示了怎么在SpringBoot 配置文件进行加密,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。首先需要确定一个加密解密方式,本文采用 RSA 进行加密解密,首先编写加密解密的代码,注...
    99+
    2023-06-14
  • Vue不运行修改配置文件的问题怎么解决
    这篇文章主要介绍“Vue不运行修改配置文件的问题怎么解决”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Vue不运行修改配置文件的问题怎么解决”文章能帮助大家解决问题。首先,需要明确的是,Vue框架的...
    99+
    2023-07-05
  • Gradle怎么修改默认的Build配置文件名
    本文小编为大家详细介绍“Gradle怎么修改默认的Build配置文件名”,内容详细,步骤清晰,细节处理妥当,希望这篇“Gradle怎么修改默认的Build配置文件名”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。G...
    99+
    2023-07-05
  • 怎么在Windows中中修改默认用户文件夹的存放位置
    这篇文章给大家介绍怎么在Windows中中修改默认用户文件夹的存放位置,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。步骤:打开注册表编辑器(Win+R regedit),进入分支:HKEY_CURRENT_USER\S...
    99+
    2023-06-14
  • 使用springboot怎么对文件的上传大小进行配置
    使用springboot怎么对文件的上传大小进行配置?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。springboot上传文件大小的配置我这里记录两种,一种是设...
    99+
    2023-05-31
    springboot bo
  • 怎么在CentOS系统中使用配置文件修改IP地址
    怎么在CentOS系统中使用配置文件修改IP地址?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。适用范围及演示系统适用范围:linux演示系统:centos6.4centos...
    99+
    2023-06-10
  • SQL Server中怎么修改数据库物理文件的存储位置
    本篇文章为大家展示了SQL Server中怎么修改数据库物理文件的存储位置,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。具体流程为:1、将现有的数据库脱机ALTER...
    99+
    2022-10-18
  • 使用Struts2时怎么对上传文件大小的限制进行修改
    使用Struts2时怎么对上传文件大小的限制进行修改?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。首先struts上传最大大小由两个地方决定. · s...
    99+
    2023-05-31
    struts2
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作