国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|JavaScript|易語言|

服務器之家 - 編程語言 - Java教程 - 如何修改覆蓋spring boot默認日志策略logback詳解

如何修改覆蓋spring boot默認日志策略logback詳解

2021-06-04 13:31Ryan.Miao Java教程

這篇文章主要給大家介紹了關于如何修改覆蓋spring boot默認日志策略logback的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

背景

spring boot在所有內部日志中使用commons logging,但是默認配置也提供了對常用日志的支持,如:java util logging,log4j, log4j2和logback。每種logger都可以通過配置使用控制臺或者文件輸出日志內容。

默認日志logback

slf4j——simple logging facade for java,它是一個針對于各類java日志框架的統一facade抽象。java日志框架眾多——常用的有java.util.logging, log4j, logback,commons-logging, spring框架使用的是jakarta commons logging api (jcl)。而slf4j定義了統一的日志抽象接口,而真正的日志實現則是在運行時決定的——它提供了各類日志框架的binding。

logback是log4j框架的作者開發的新一代日志框架,它效率更高、能夠適應諸多的運行環境,同時天然支持slf4j。

默認情況下,spring boot會用logback來記錄日志,并用info級別輸出到控制臺。在運行應用程序和其他例子時,你應該已經看到很多info級別的日志了。

springboot初始化了日志的默認實現,只要我們在配置文件添加對應的配置即可。

比如

?
1
2
3
4
5
6
7
8
9
logging:
 file: logs/application-debug.log
 pattern:
 console: "%d %-5level %logger : %msg%n"
 file: "%d %-5level [%thread] %logger : %msg%n"
 level:
 org.springframework.web: error
 com.howtodoinjava: info
 org.hibernate: error

可以指定日志文件名,覆蓋默認的pattern,指定不同日志級別。

但依舊有很多局限性。比如,默認的文件方案是:

e:\maven\repository\org\springframework\boot\spring-boot\1.5.13.release\spring-boot-1.5.13.release.jar!\org\springframework\boot\logging\logback\file-appender.xml

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<appender name="file"
 class="ch.qos.logback.core.rolling.rollingfileappender">
 <encoder>
  <pattern>${file_log_pattern}</pattern>
 </encoder>
 <file>${log_file}</file>
 <rollingpolicy class="ch.qos.logback.core.rolling.fixedwindowrollingpolicy">
  <filenamepattern>${log_file}.%i</filenamepattern>
 </rollingpolicy>
 <triggeringpolicy
  class="ch.qos.logback.core.rolling.sizebasedtriggeringpolicy">
  <maxfilesize>10mb</maxfilesize>
 </triggeringpolicy>
</appender>

只是超過10m就生成一個新文件。而我們還遇到過日志把磁盤打滿的情況??隙ㄐ枰〞r清理,還想要按照日期生成文件。這樣,僅僅配置文件是不夠的,需要我們自己定義。

自定義

實現自定義就是在resource下新增logback-spring.xml, 然后編寫我們的配置方案。就是完全跳過spring的默認配置了。但我又想偷懶,還想用spring的配置,但只是修改個別,比如file。

spring默認配置文件 e:\maven\repository\org\springframework\boot\spring-boot\1.5.13.release\spring-boot-1.5.13.release.jar!\org\springframework\boot\logging\logback\base.xml

我們只要

?
1
<include resource="org/springframework/boot/logging/logback/base.xml"/>

就可以拿過來直接用。

最初我也是這樣做的,但后面發現有些東西是不能覆蓋的。比如內置的日志文件名,所以,最后把base里的內容單獨抽離出來用了。

logback-spring.xml

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<?xml version="1.0" encoding="utf-8"?>
<configuration scan="true" scanperiod="60 seconds" debug="false">
 
 <springproperty scope="context" name="appname" source="spring.application.name"
 defaultvalue="application"/>
 <springproperty scope="context" name="log.path" source="logging.path"
 defaultvalue="logs"/>
 <springproperty scope="context" name="logstashurl" source="logstash.url"
 defaultvalue="localhost:4560"/>
 
 <!--<include resource="org/springframework/boot/logging/logback/base.xml"/>-->
 <include resource="org/springframework/boot/logging/logback/defaults.xml" />
 <property name="log_file" value="${log_file:-${log_path:-${log_temp:-${java.io.tmpdir:-/tmp}}}/spring.log}"/>
 <include resource="org/springframework/boot/logging/logback/console-appender.xml" />
 
 <!--輸出到文件-->
 <appender name="time_file" class="ch.qos.logback.core.rolling.rollingfileappender">
 <!--<rollingpolicy class="ch.qos.logback.core.rolling.timebasedrollingpolicy">-->
 <!-- <filenamepattern>${log_file}.%d{yyyy-mm-dd}.log</filenamepattern>-->
 <!-- <maxhistory>7</maxhistory>-->
 <!--</rollingpolicy>-->
 <rollingpolicy class="ch.qos.logback.core.rolling.sizeandtimebasedrollingpolicy">
  <!-- daily rollover -->
  <filenamepattern>${log_file}.%d{yyyy-mm-dd}.%i.log</filenamepattern>
  <maxhistory>7</maxhistory>
  <maxfilesize>100mb</maxfilesize>
  <totalsizecap>1gb</totalsizecap>
 </rollingpolicy>
 <encoder>
  <!--<pattern>%d{yyyy-mm-dd hh:mm:ss.sss} ${appname} %x{req.remotehost} %x{req.requesturi} %x{req.useragent} %x{req.method} - [%thread] %-5level %logger{36} - %msg%n</pattern>-->
  <pattern>${file_log_pattern}</pattern>
 </encoder>
 </appender>
 
 <!-- 輸出到logstash-->
 <appender name="logstash" class="net.logstash.logback.appender.logstashtcpsocketappender">
 <destination>${logstashurl}</destination>
 <encoder charset="utf-8" class="net.logstash.logback.encoder.logstashencoder"/>
 </appender>
 
 <root level="info">
 <appender-ref ref="console"/>
 <appender-ref ref="time_file"/>
 </root>
 
 
 <springprofile name="dev">
 <logger name="com.test.demo.mapper" level="debug">
 </logger>
 </springprofile>
 <springprofile name="local, test, prod">
 <root level="warn">
  <appender-ref ref="logstash"/>
 </root>
 </springprofile>
</configuration>

同時,需要讀取配置文件, 配置文件依舊生效

?
1
2
3
logging:
 path: logs
 file: ${logging.path}/${spring.application.name}

這里,include拿到spring默認配置,但移除了base里的root配置,去掉了file。并自定義file。file規則是保存7天,每100m分一個文件,總大小不超過1g。

?
1
2
3
4
5
6
<springproperty scope="context" name="appname" source="spring.application.name"
defaultvalue="application"/>
<springproperty scope="context" name="log.path" source="logging.path"
defaultvalue="logs"/>
<springproperty scope="context" name="logstashurl" source="logstash.url"
defaultvalue="localhost:4560"/>

這一塊配置并沒有使用,只是放這里備份。logback里想要使用spring的配置文件的變量,只能通過這種方式讀取。因為我配置了logstash,需要讀取logstash的url,所以這樣做。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對服務器之家的支持。

原文鏈接:https://www.cnblogs.com/woshimrf/p/springboot-logback-config.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 欧美国产综合一区 | 免费羞羞视频网站 | 中文字幕在线观看精品视频 | 午夜国产视频 | av国产精品 | 国产免费一区二区三区 | 国产一区二区精品在线观看 | 高清中文字幕 | 久久精品国产精品青草 | 黄色一级大片在线免费看产 | 99精品国产高清在线观看 | 国内精品一区二区三区 | 亚洲日韩中文字幕在线播放 | 国产精品自产拍在线观看 | 久久久精品国产 | 欧洲视频一区 | 欧美日韩综合视频 | 九九在线视频 | 国产精品免费高清 | 国产精品一二 | 国产乱码久久久久久一区二区 | 成人精品久久 | 色婷婷在线视频观看 | 国产在线观看一区 | 一区二区免费 | 欧美日韩视频在线第一区 | av一区二区在线观看 | 天天操网址 | 国产在线中文字幕 | 成人免费视频网 | 久久久久中文 | 国产精品国产 | 欧美日韩专区 | 狠狠操av| 午夜精品美女久久久久av福利 | 国产精品视频入口 | 久久久久久久av | 日本天堂在线 | 欧美视频在线一区 | 久在线视频| 国产成人一区二区三区在线观看 |