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

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

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

服務器之家 - 編程語言 - Java教程 - Logback的使用及如何配置

Logback的使用及如何配置

2021-08-30 11:40江湖段小二 Java教程

這篇文章主要介紹了Logback的使用及如何配置,幫助大家更好的理解和學習使用Logback,感興趣的朋友可以了解下

日志在項目開發(fā)過程的作用不言而喻,項目上線后,我們需要根據日志文件定位問題發(fā)生的位置以及產生的原因。以前在項目開發(fā)中,已經有前人在工程中配置過日志,所以完全不需要自己再進行日志的配置。這次在新的項目中自己來配置日志時,還是遇到了一些波折,下面慢慢道來。

1 為什么選用Logback?

目前,在Springboot工程體系中,使用較多的日志組件是Slf4j、Logback以及Log4j2。而Slf4j本身只是一個接口類,具體的實現還是由Logback或Log4j2來完成的。由于Springboot自身就集成了Logback,默認使用的日志組件是Logback,Logback的體系結構具有足夠的通用性,可以在不同的場景下使用。因此,在我們的DRS工程中,使用了Logback進行日志的打印。

目前,Logback包含三個部分:logback-core, logback-classic, logback-access。 Logback-core: 為其他兩個模塊奠定了基礎 Logback-classic: 可以被同化為log4j的一個顯著改進的版本,此外, logback-classic實現了slf4japi,因此您可以方便地在logback和其他日志框架(如log4j或log4j)之間來回切換java.util.logging文件 Logback-access: 集成了Servlet容器(如Tomcat和Jetty),以提供HTTP訪問日志功能。

如果使用的是Springboot是2.4版本及以上,則不需要另外引入logback-core, logback-classic, logback-access和slf2j-api的依賴包的。

2 Logback的配置

首先,看一下我們在DRS工程中使用的Logback配置文件:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <configuration>
  3. <property name="log.path" value="/duan/drs-server/logs" />
  4. <property name="log.pattern" value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n" />
  5.  
  6. <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
  7. <encoder>
  8. <pattern>${log.pattern}</pattern>
  9. </encoder>
  10. </appender>
  11.  
  12. <!-- 系統debug日志輸出 -->
  13. <appender name="FILE_DEBUG" class="ch.qos.logback.core.rolling.RollingFileAppender">
  14. <file>${log.path}/drs-server-debug.log</file>
  15. <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
  16. <fileNamePattern>${log.path}/drs-server-debug.%d{yyyy-MM-dd}.log</fileNamePattern>
  17. <maxHistory>30</maxHistory>
  18. </rollingPolicy>
  19. <encoder>
  20. <pattern>${log.pattern}</pattern>
  21. </encoder>
  22. <filter class="ch.qos.logback.classic.filter.LevelFilter">
  23. <level>DEBUG</level>
  24. <onMatch>ACCEPT</onMatch>
  25. <onMismatch>DENY</onMismatch>
  26. </filter>
  27. </appender>
  28.  
  29. <!-- 系統info日志輸出 -->
  30. <appender name="FILE_INFO" class="ch.qos.logback.core.rolling.RollingFileAppender">
  31. <file>${log.path}/drs-server-info.log</file>
  32. <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
  33. <fileNamePattern>${log.path}/drs-server-info.%d{yyyy-MM-dd}.log</fileNamePattern>
  34. <maxHistory>30</maxHistory>
  35. </rollingPolicy>
  36. <encoder>
  37. <pattern>${log.pattern}</pattern>
  38. </encoder>
  39. <filter class="ch.qos.logback.classic.filter.LevelFilter">
  40. <level>INFO</level>
  41. <onMatch>ACCEPT</onMatch>
  42. <onMismatch>DENY</onMismatch>
  43. </filter>
  44. </appender>
  45.  
  46. <!-- 系統warn日志輸出 -->
  47. <appender name="FILE_WARN" class="ch.qos.logback.core.rolling.RollingFileAppender">
  48. <file>${log.path}/drs-server-warn.log</file>
  49. <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
  50. <fileNamePattern>${log.path}/drs-server-warn.%d{yyyy-MM-dd}.log</fileNamePattern>
  51. <maxHistory>30</maxHistory>
  52. </rollingPolicy>
  53. <encoder>
  54. <pattern>${log.pattern}</pattern>
  55. </encoder>
  56. <filter class="ch.qos.logback.classic.filter.LevelFilter">
  57. <level>WARN</level>
  58. <onMatch>ACCEPT</onMatch>
  59. <onMismatch>DENY</onMismatch>
  60. </filter>
  61. </appender>
  62.  
  63. <!-- 系統error日志輸出 -->
  64. <appender name="FILE_ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
  65. <file>${log.path}/drs-server-error.log</file>
  66. <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
  67. <fileNamePattern>${log.path}/drs-server-error.%d{yyyy-MM-dd}.log</fileNamePattern>
  68. <maxHistory>30</maxHistory>
  69. </rollingPolicy>
  70. <encoder>
  71. <pattern>${log.pattern}</pattern>
  72. </encoder>
  73. <filter class="ch.qos.logback.classic.filter.LevelFilter">
  74. <level>ERROR</level>
  75. <onMatch>ACCEPT</onMatch>
  76. <onMismatch>DENY</onMismatch>
  77. </filter>
  78. </appender>
  79.  
  80. <logger name="com.nuonuo.middleware.drsserver" level="INFO" />
  81. <logger name="org.springframework" level="warn" />
  82.  
  83. <root level="INFO">
  84. <appender-ref ref="STDOUT" />
  85. <appender-ref ref="FILE_DEBUG" />
  86. <appender-ref ref="FILE_INFO" />
  87. <appender-ref ref="FILE_WARN" />
  88. <appender-ref ref="FILE_ERROR" />
  89. </root>
  90. </configuration>

說明:

屬性 說明
log.path 定義日志文件的輸出路徑
log.pattern 定義日志文件輸出格式
appender 定義了日志的輸出文件,日志文件保留時長,使用何種模式輸出,以及過濾規(guī)則。在上述文件中,分別針對DEBUG、INFO、WARN和ERROR日志進行了定義了四個Appender
logger 用來設置某一個類或某個包的日志打印級別。在上述配置中,我們將DRS工程的日志輸出級別定義為INFO,那么,如果只想打印出DRS工程中的日志,則只需將打印級別level設置為WARN
root 是一個根logger,root下可以包含零個或多個appender。如果一個appender沒有在root下引入,則不會生成對應的日志文件

3 Logback的輸出格式

針對以上述配置中的格式進行說明:

  1. %d{HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n
字段 說明
%d{HH:mm:ss.SSS} 用于輸出日志事件的日期,其中%d也可以替換成%date,該設置對應下圖中的紅色標記部分
[%thread] 輸出對應的線程名。在上面的截圖中可以看到,輸出線程是主線程main
%-5level 輸出日志級別,其中-5表示如果記錄器名稱長度小于5個字符,則右鍵填充空格
%logger{20} 輸出日志事件起源處記錄器的名稱。其中20表示輸出記錄的名稱長度限制,超過這個長度,記錄器名將會進行縮寫。但是,記錄器名稱中最右邊的段從不縮寫,即使其長度比“長度”選項長。其他段可以縮短到最多一個字符,但永遠不會刪除
[%method,%line] %method 輸出發(fā)出日志記錄請求的方法名稱,%method也可替換成%M; %line——輸出發(fā)出日志記錄請求的行號,%line也可替換成%L
%msg 輸出應用程序提供的與日志事件關聯的消息。其中%msg也可替換成%m或%message
%n 輸出平臺相關的行分隔符字符

4 Appender

Appender子類包含Filter、Encoder、ConsoleAppender、FileAppender、以及RollingFileAppender。其類圖關系如下所示。

Logback的使用及如何配置

顧名思義目標文件由file選項指定。如果該文件已存在,則根據append屬性的值將其追加或截斷。RollingFileAppender 擴展了FileAppender,具有滾動更新日志文件的功能。

類名 encoder immediateFlush target withJansi append file prudent rollingPolicy triggeringPolicy
OutputStreamAppender              
ConsoleAppender          
FileAppender - -    
RollingFileAppender - -

OutputStreamAppender 這個類提供了其他附加程序構建的基本服務。該類包含兩個屬性設置: encoder—— 確定日志寫入的編碼格式。 immediateFlush——布爾值,默認為true, 立即刷新輸出流可確保立即寫出日志事件,并且在應用程序退出而未正確關閉附加器時不會丟失這些事件。 另一方面,將此屬性設置為“false”可能會使日志吞吐量增加四倍。同樣,如果immediateFlush設置為“false”,并且應用程序退出時appender未正確關閉,則尚未寫入磁盤的日志事件可能會丟失。

ConsoleAppender 將日志附加在控制臺上,其包含三個屬性: encoder——略 target—— System.out或者 System.err字符串值之一 默認目標是 System.out withJansi——布爾值,默認false。 將withJansi設置為true將激活Jansi庫,該庫為Windows機器上的ANSI顏色代碼提供支持。在Windows主機上,如果此屬性設置為true,則應將網址:org.fusesource.jansi:jansi:1.17“在類路徑上進行設置。請注意,基于Unix的操作系統(如Linux和macosx)默認支持ANSI顏色代碼。一般我們很少用到,使用默認值即可。

FileAppender 它將日志事件附加到文件中,其包含四個屬性: append——布爾值,默認為true, 表示事件附加在現有文件的末尾。如果append為false,則任何現有文件都將被截斷。 encoder——略 file—— 要寫入的文件的名稱, 如果文件不存在,則創(chuàng)建該文件。 如果文件的父目錄不存在,FileAppender將自動創(chuàng)建它,包括任何必要但不存在的父目錄。 prudent——布爾值,默認值為false。如果設置為true, FileAppender將安全地寫入指定的文件,即使存在運行在不同jvm(可能運行在不同主機上)中的其他FileAppender實例。

RollingFileAppender 擴展了FileAppender,具有滾動更新日志文件的功能,其包含以下幾個屬性: file——略 append——略 encoder——略 rollingPolicy—— 此選項是在發(fā)生滾動時指定RollingFileAppender行為的組件,包含SizeAndTimeBasedRollingPolicy、FixedWindowRollingPolicy、TimeBasedRollingPolicy。在上述配置中我們使用的是最為廣泛的TimeBasedRollingPolicy。 triggeringPolicy—— 此選項是通知RollingFileAppender何時激活滾動更新過程的組件 prudent——布爾值,當為true時,不支持FixedWindowRollingPolicy。

5 Logback使用過程中遇到的問題

起初,在配置完logback.xml文件后,始終無法將日志輸出到指定目錄。 第一步,調試確認使用的是logback組件; 第二步,引入logback-core、logback-classic、logback-access和slf4j-api對應的jar包,驗證是否可以將日志輸出到指定目錄。驗證后發(fā)現,仍然無法解決問題,于是將引入的jar包刪除。 第三步,排除springboot中包含的log4j2相關的jar,驗證后仍無法解決問題。 第四步,在網上查到可能跟配置文件的命名有關,有說logback-spring.xml加載的優(yōu)先級最高,于是將文件名由logback.xml改為logback-spring.xml,但是仍然無法解決問題。官網上看到的加載順序是: logback-test.xml> logback.groovy> logback.xml。具體可見官方文檔logback.qos.ch/manual/conf… 第五步,懷疑可能沒加載logback.xml文件,于是在application.properties中加入logging.config=classpath:logback.xml,啟動工程時報錯,錯誤信息是: class path resource [logback.xml] cannot be resolved to URL because it does not exist。

Logback的使用及如何配置

根據錯誤信息可以看到,系統中根本沒有加載到logback.xml文件。 第六步,由于第五步驗證系統根本沒有加載到logback.xml文件,于是檢查了一下pom.xml文件,發(fā)現在build時,沒有引入資源文件,于是修改pom.xml文件,添加如下內容,成功將日志輸出到指定目錄。

  1. <resource>
  2. <directory>src/main/resources</directory>
  3. <includes>
  4. <include>**/*.xml</include>
  5. </includes>
  6. <filtering>false</filtering>
  7. </resource>

以上就是Logback的使用及如何配置的詳細內容,更多關于Logback的使用和配置的資料請關注服務器之家其它相關文章!

原文鏈接:https://juejin.cn/post/6944961954796535816

延伸 · 閱讀

精彩推薦
  • Java教程20個非常實用的Java程序代碼片段

    20個非常實用的Java程序代碼片段

    這篇文章主要為大家分享了20個非常實用的Java程序片段,對java開發(fā)項目有所幫助,感興趣的小伙伴們可以參考一下 ...

    lijiao5352020-04-06
  • Java教程xml與Java對象的轉換詳解

    xml與Java對象的轉換詳解

    這篇文章主要介紹了xml與Java對象的轉換詳解的相關資料,需要的朋友可以參考下...

    Java教程網2942020-09-17
  • Java教程Java使用SAX解析xml的示例

    Java使用SAX解析xml的示例

    這篇文章主要介紹了Java使用SAX解析xml的示例,幫助大家更好的理解和學習使用Java,感興趣的朋友可以了解下...

    大行者10067412021-08-30
  • Java教程升級IDEA后Lombok不能使用的解決方法

    升級IDEA后Lombok不能使用的解決方法

    最近看到提示IDEA提示升級,尋思已經有好久沒有升過級了。升級完畢重啟之后,突然發(fā)現好多錯誤,本文就來介紹一下如何解決,感興趣的可以了解一下...

    程序猿DD9332021-10-08
  • Java教程小米推送Java代碼

    小米推送Java代碼

    今天小編就為大家分享一篇關于小米推送Java代碼,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧...

    富貴穩(wěn)中求8032021-07-12
  • Java教程Java8中Stream使用的一個注意事項

    Java8中Stream使用的一個注意事項

    最近在工作中發(fā)現了對于集合操作轉換的神器,java8新特性 stream,但在使用中遇到了一個非常重要的注意點,所以這篇文章主要給大家介紹了關于Java8中S...

    阿杜7472021-02-04
  • Java教程Java BufferWriter寫文件寫不進去或缺失數據的解決

    Java BufferWriter寫文件寫不進去或缺失數據的解決

    這篇文章主要介紹了Java BufferWriter寫文件寫不進去或缺失數據的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望...

    spcoder14552021-10-18
  • Java教程Java實現搶紅包功能

    Java實現搶紅包功能

    這篇文章主要為大家詳細介紹了Java實現搶紅包功能,采用多線程模擬多人同時搶紅包,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙...

    littleschemer13532021-05-16
主站蜘蛛池模板: 在线第一页 | 成人高清在线视频 | 91丝袜| 欧美日韩三级在线 | 日本中文字幕在线观看 | 高清国产午夜精品久久久久久 | 啊啊啊网站 | 91久久综合亚洲鲁鲁五月天 | 日本激情视频一区二区三区 | 一级全黄性色生活片 | 亚洲精品一区中文字幕乱码 | 精品久久一区 | 亚洲国产成人精品女 | 国产成人精品一区二区三区 | 观看av| 亚洲www视频 | 国产精品亚洲第一区在线暖暖韩国 | 欧美成人二区 | 国产精选一区二区三区不卡催乳 | 色视频在线免费观看 | 欧美在线视屏 | 伊人久久综合精品一区二区三区 | 在线观看亚洲a | 久久精品不卡 | 91亚洲精品乱码久久久久久蜜桃 | 最新国产视频 | 精品国产欧美一区二区 | 免费成人黄色 | 亚洲毛片网站 | 成人a在线视频 | 永久91嫩草亚洲精品人人 | 欧美天天| 亚洲欧美一区在线 | 国产亚洲精品久久久久久久久 | 一级毛毛片| 精品一区二区视频 | 99在线精品视频 | 秋霞午夜 | 日韩和欧美一区二区 | 国产一区二区久久久 | 精精国产xxxx在线视频www |