一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專(zhuān)注于服務(wù)器技術(shù)及軟件下載分享
分類(lèi)導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語(yǔ)言|JavaScript|易語(yǔ)言|vb.net|

服務(wù)器之家 - 編程語(yǔ)言 - Java教程 - SpringBoot之logback-spring.xml不生效的解決方法

SpringBoot之logback-spring.xml不生效的解決方法

2021-03-18 11:43加多 Java教程

這篇文章主要介紹了SpringBoot之logback-spring.xml不生效的解決方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

一、前言

做新應(yīng)用就是這樣,會(huì)遇到各種問(wèn)題,昨天剛解決了加載某一個(gè)類(lèi)時(shí)候拋出了 class is not visible from class loader 的問(wèn)題,今天就有遇到了日志文件找不到的問(wèn)題,還是和二方庫(kù)有關(guān)的,下面就一一道來(lái)。

二、問(wèn)題產(chǎn)生

正常情況下在  src/main/resources 目錄放下  logback-spring.xml 的配置文件(使用logback日志系統(tǒng)),如下圖

SpringBoot之logback-spring.xml不生效的解決方法

application.properties里面設(shè)置  spring.application.name=spring-boot-demo-application

引入了一個(gè)二方包,二方包里面有 logback.xml

按照上面配置,運(yùn)行后正常情況下我們希望在 user.home/spring-boot-demo-application/logs 目錄應(yīng)該有 applicaiton.log 日志文件,然而并沒(méi)有,連 spring-boot-demo-application 這個(gè)文件夾都沒(méi)有生成。

三、問(wèn)題分析

那么我們就去看看日志系統(tǒng)是如何查找并解析日志配置文件的,springboot中是使用loggingapplicationlistener這個(gè)類(lèi)來(lái)進(jìn)行日志系統(tǒng)的初始化的。loggingapplicationlistener實(shí)現(xiàn)了applicationlistener接口,那么我們通過(guò)時(shí)序圖看loggingapplicationlistener的onapplicationevent方法做了啥:

SpringBoot之logback-spring.xml不生效的解決方法

代碼(8)查找標(biāo)準(zhǔn)日志配置文件,什么是標(biāo)準(zhǔn)那,那么就看代碼(9)的代碼:

?
1
2
3
4
protected string[] getstandardconfiglocations() {
  return new string[] { "logback-test.groovy", "logback-test.xml", "logback.groovy",
    "logback.xml" };
 }

像 "logback-test.groovy", "logback-test.xml", "logback.groovy","logback.xml" 這些是標(biāo)準(zhǔn)的。

那么具體怎么查找那,要看代碼(10):

?
1
2
3
4
5
6
7
8
9
10
private string findconfig(string[] locations) {
  for (string location : locations) {
   classpathresource resource = new classpathresource(location,
     this.classloader);
   if (resource.exists()) {
    return "classpath:" + location;
   }
  }
  return null;
 }

可知使用classpathresource類(lèi)去查找,下面看classpathresource的exists方法:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public boolean exists() {
  return (resolveurl() != null);
 }
 
 
 protected url resolveurl() {
  if (this.clazz != null) {
   return this.clazz.getresource(this.path);
  }
  else if (this.classloader != null) {
   return this.classloader.getresource(this.path);
  }
  else {
   return classloader.getsystemresource(this.path);
  }
 }

可知是使用 this.classloader.getresource(this.path); 去查找這里classloader為appclassloader。

如果代碼(8)沒(méi)有查找到配置,則執(zhí)行點(diǎn)(12),代碼12邏輯和代碼(8)類(lèi)似只是查找文件名字不一樣,下面看下:

?
1
2
3
4
5
6
7
8
9
10
protected string[] getspringconfiglocations() {
  string[] locations = getstandardconfiglocations();
  for (int i = 0; i < locations.length; i++) {
   string extension = stringutils.getfilenameextension(locations[i]);
   locations[i] = locations[i].substring(0,
     locations[i].length() - extension.length() - 1) + "-spring."
     + extension;
  }
  return locations;
 }

可知是在getstandardconfiglocations的文件名上拼接spring,拼接后的文件名為:

“` “logback-test-spring.groovy”, “logback-test-spring.xml”, “logback-spring.groovy”,”logback-spring.xml” “

綜上所述springboot首先去查找標(biāo)準(zhǔn)的日志配置文件,如果找不到在去找拼接spring的配置的文件。

那么上面我們說(shuō)了應(yīng)用中是引入了一個(gè)含有l(wèi)ogback.xml的jar包,而這個(gè)jar包也是使用appclassloader加載的,所以在執(zhí)行步驟(8)的時(shí)候找到了jar包里面的logback.xml,所以就不會(huì)再去執(zhí)行步驟(12)來(lái)找我們自定義的logback-spring.xml了。

四、問(wèn)題解決

方案一,修改我們的配置文件為logback.xml,這樣在步驟(8)的時(shí)候會(huì)首先查找logback.xml,應(yīng)該是可以找到的。

方案二、避免二方包里面含有l(wèi)ogback.xml,這種情況下,無(wú)論我們自己的配置是logback-spring.xml還是logback.xml都不會(huì)有問(wèn)題。

五、總結(jié)

日常開(kāi)發(fā)中二方包里面不要帶有日志配置文件,二方庫(kù)中使用日志一般都是使用代碼創(chuàng)建的方式。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持服務(wù)器之家。

原文鏈接:http://ifeve.com/36583-2/

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 無码一区中文字幕少妇熟女网站 | 欧美侏儒xxx | 成人女人天堂午夜视频 | 欧美18-19| 亚州一区二区 | 久热在线这里只有精品7 | 亚洲成在人网站天堂一区二区 | 日韩毛片免费在线观看 | 色菇凉天天综合网 | 色五夜婷婷| 午夜爱情动作片P | 97操| 91看片淫黄大片在看 | 91亚洲精品第一综合不卡播放 | 超强台风免费观看完整版视频 | 美女扒开胸罩露出胸大乳 | 深夜精品高中女学生 | 国产99页 | 国产成人小视频 | 91精品国产高清久久久久久io | 青青久久精品国产 | h杯奶水太多h | 亚洲国产精品自在自线观看 | 成人久久18网站 | 我的妹妹最近有点怪在线观看 | 亚洲AV午夜精品麻豆AV | 亚洲乱码一区二区三区国产精品 | 精品久久久噜噜噜久久7 | 国产目拍亚洲精品一区二区三区 | 亚洲第一网站免费视频 | 欧美日韩国产精品自在自线 | 免费网站国产 | 免费导航 | 暖暖中国免费观看高清完整版 | gayrb免费漫画入口 | 911香蕉视频| 精品日韩欧美一区二区三区在线播放 | 美女扒开腿让男生桶爽漫画 | 果冻传媒九一制片厂 | 美国高清xxxxx18 | 歪歪视频在线播放无遮挡 |