欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Spring Boot 使用 logback、logstash、ELK 記錄日志文件的方法

 更新時(shí)間:2017年12月13日 10:59:41   作者:_淺墨_  
這篇文章主要介紹了Spring Boot 使用 logback、logstash、ELK 記錄日志文件的思路詳解,文中給大家提到了logback 取代 log4j的理由,需要的朋友可以參考下

Spring Boot 下,嘗試使用 log4j 記錄日志到 logstash,在src/main/resources 目錄下添加 log4j.properties 文件進(jìn)行自定義輸出日志文件,未能成功。在 application.yml 中 配置 logging path 打印日志成功了,但是未能調(diào)試成功日志分文件記錄。網(wǎng)上查閱資料,說是 Spring Boot 默認(rèn)使用 logback 記錄日志。log4j 多次嘗試后無果,遂改為使用 logback 記錄,最終測試成功。

1. 關(guān)于 Spring Boot 日志文件路徑的疑惑?

同時(shí)配置了 logging.path 和 logging.file 屬性,如下配置:

logging:
 path: /var/log
 file: test.log

僅僅只會(huì)在項(xiàng)目根路徑下產(chǎn)生 test.log 文件,不會(huì)在指定路徑下產(chǎn)生日志文件(期望日志路徑為:logging.path + logging.file)。

原因:Spring Boot 中的 logging.path 和 logging.file 這2個(gè)屬性,只需要配置其中之一即可,如果同時(shí)配置,則使用 logging.file 屬性。

當(dāng)配置了 loggin.path 屬性時(shí),將在該路徑下生成 spring.log 文件,即:此時(shí)使用默認(rèn)的日志文件名 spring.log。

當(dāng)配置了 loggin.file 屬性時(shí),將在指定路徑下生成指定名稱的日志文件。默認(rèn)為項(xiàng)目相對路徑,可以為 logging.file 指定絕對路徑。

logging: 

path: /var/logs   # 在/var/logs目錄下生成spring.log文件
 file: /var/logs/test.log # 在/var/logs目錄下生成test.log文件

2. logback 取代 log4j的理由:

以下來在網(wǎng)絡(luò)摘抄:

Logback 和 log4j 是非常相似的,如果你對 log4j 很熟悉,那對 logback 很快就會(huì)得心應(yīng)手。下面列了 logback 相對于 log4j 的一些優(yōu)點(diǎn):

    1、更快的實(shí)現(xiàn)  Logback 的內(nèi)核重寫了,在一些關(guān)鍵執(zhí)行路徑上性能提升10倍以上。而且logback 不僅性能提升了,初始化內(nèi)存加載也更小了。

    2、非常充分的測試 Logback 經(jīng)過了幾年,數(shù)不清小時(shí)的測試。Logback 的測試完全不同級(jí)別的。在作者的觀點(diǎn),這是簡單重要的原因選擇 logback 而不是 log4j。

    3、Logback-classic 非常自然實(shí)現(xiàn)了 SLF4j Logback-classic 實(shí)現(xiàn)了 SLF4j。在使用SLF4j中,你都感覺不到 logback-classic。而且因?yàn)?logback-classic 非常自然地實(shí)現(xiàn)了SLF4J,所以切換到 log4j 或者其他,非常容易,只需要提供成另一個(gè) jar 包就 OK,根本不需要去動(dòng)那些通過 SLF4JAPI 實(shí)現(xiàn)的代碼。

    4、非常充分的文檔,官方網(wǎng)站有兩百多頁的文檔。

    5、自動(dòng)重新加載配置文件,當(dāng)配置文件修改了,Logback-classic能自動(dòng)重新加載配置文件。掃描過程快且安全,它并不需要另外創(chuàng)建一個(gè)掃描線程。這個(gè)技術(shù)充分保證了應(yīng)用程序能跑得很歡在JEE環(huán)境里面。

    6、Lilith,Lilith 是 log 事件的觀察者,和 log4j 的 chainsaw 類似。而 lilith 還能處理大數(shù)量的 log 數(shù)據(jù) 。

    7、謹(jǐn)慎的模式和非常友好的恢復(fù),在謹(jǐn)慎模式下,多個(gè) FileAppender 實(shí)例跑在多個(gè) JVM 下,能夠安全地寫道同一個(gè)日志文件。RollingFileAppender 會(huì)有些限制。Logback 的FileAppender 和它的子類包括 RollingFileAppender 能夠非常友好地從 I/O 異常中恢復(fù)。

    8、配置文件可以處理不同的情況,開發(fā)人員經(jīng)常需要判斷不同的 Logback 配置文件在不同的環(huán)境下(開發(fā),測試,生產(chǎn))。而這些配置文件僅僅只有一些很小的不同,可以通過,和來實(shí)現(xiàn),這樣一個(gè)配置文件就可以適應(yīng)多個(gè)環(huán)境。

    9、Filters(過濾器),有些時(shí)候,需要診斷一個(gè)問題,需要打出日志。在log4j,只有降低日志級(jí)別,不過這樣會(huì)打出大量的日志,會(huì)影響應(yīng)用性能。在 Logback,你可以繼續(xù)保持那個(gè)日志級(jí)別而除掉某種特殊情況,如 alice 這個(gè)用戶登錄,她的日志將打在 DEBUG 級(jí)別而其他用戶可以繼續(xù)打在WARN 級(jí)別。要實(shí)現(xiàn)這個(gè)功能只需加4行XML配置??梢詤⒖?MDCFIlter 。    

   10、SiftingAppender(一個(gè)非常多功能的Appender)  它可以用來分割日志文件根據(jù)任何一個(gè)給定的運(yùn)行參數(shù)。如,SiftingAppender 能夠區(qū)別日志事件跟進(jìn)用戶的 Session,然后每個(gè)用戶會(huì)有一個(gè)日志文件。

   11、自動(dòng)壓縮已經(jīng)打出來的 log,RollingFileAppender 在產(chǎn)生新文件的時(shí)候,會(huì)自動(dòng)壓縮已經(jīng)打出來的日志文件。壓縮是個(gè)異步過程,所以甚至對于大的日志文件,在壓縮過程中應(yīng)用不會(huì)受任何影響。

   12、堆棧樹帶有包版本,Logback在打出堆棧樹日志時(shí),會(huì)帶上包的數(shù)據(jù)。

   13、自動(dòng)去除舊的日志文件,通過設(shè)置 TimeBasedRollingPolicy 或者SizeAndTimeBasedFNATP 的 maxHistory 屬性,你可以控制已經(jīng)產(chǎn)生日志文件的最大數(shù)量。如果設(shè)置 maxHistory 12,那那些 log 文件超過12個(gè)月的都會(huì)被自動(dòng)移除。

總之,logback 比 log4j 太優(yōu)秀了,讓我們的應(yīng)用全部建立 logback 上吧 !

3. 引入 logback 到項(xiàng)目中

添加包依賴,Maven style: 

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-logging</artifactId>
 </dependency>
 <dependency>
  <groupId>net.logstash.logback</groupId>
  <artifactId>logstash-logback-encoder</artifactId>
  <version>4.11</version>
 </dependency>
 <dependency>
  <groupId>net.logstash.log4j</groupId>
  <artifactId>jsonevent-layout</artifactId>
  <version>1.7</version>
 </dependency> 

4. 添加 logback.xml

添加 logback.xml 文件到 src/main/resources 目錄下,系統(tǒng)會(huì)自動(dòng)加載讀取 logback.xml 配置。

logback.xml:

<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds" debug="false">
 <include resource="org/springframework/boot/logging/logback/base.xml" />
 <contextName>logback</contextName>
 <!-- 記錄文件到特定目錄 -->
 <!-- <property name="log.path" value="E:\\test\\logback.log" /> -->
 <property name="log.path" value="/Users/chang/Desktop/CHLogs/logback.log" />
<appender name="stash" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
    <destination>192.168.220.83:9601</destination>
   <encoder class="net.logstash.logback.encoder.LogstashEncoder" />
</appender>
<!--輸出到控制臺(tái)-->
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
 <!-- <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
  <level>ERROR</level>
 </filter>-->
 <encoder>
  <pattern>%d{HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n</pattern>
 </encoder>
</appender>
<!--輸出到文件-->
<appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
 <file>${log.path}</file>
 <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
  <fileNamePattern>logback.%d{yyyy-MM-dd}.log</fileNamePattern>
 </rollingPolicy>
 <encoder>
  <pattern>%d{HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n</pattern>
 </encoder>
</appender>
<root level="info">
 <appender-ref ref="stash"/>
 <appender-ref ref="console" />
 <appender-ref ref="file" />
</root>
<!-- logback為 java 中的包 
<logger name="com.dudu.controller"/>
logback.LogbackDemo:類的全路徑
<logger name="com.dudu.controller.LearnController" level="WARN" additivity="false">
 <appender-ref ref="console"/>
</logger> -->
</configuration>

5. logstash-logback-encoder 版本問題

在 spring-boot 中,如果使用 logstash-logback-encoder ,可能需要告訴 maven 具體的版本號(hào)以此避免包依賴沖突。例如可以像下面這樣設(shè)置 logback-core, logback-classic, and logback-access 的 dependencies:

 <properties>
  <ch.qos.logback.version>1.2.3</ch.qos.logback.version>
 </properties>
 <dependencyManagement>
  <dependencies>
   <dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-core</artifactId>
    <version>${ch.qos.logback.version}</version>
   </dependency>
   <dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-classic</artifactId>
    <version>${ch.qos.logback.version}</version>
   </dependency>
   <dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-access</artifactId>
    <version>${ch.qos.logback.version}</version>
   </dependency>
  </dependencies>
 </dependencyManagement>

6. logstash 服務(wù)搭建

參考:

1.logstash-logback-encoder

總結(jié)

以上所述是小編給大家介紹的Spring Boot 使用 logback、logstash、ELK 記錄日志文件的方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關(guān)文章

  • 解決springcloud-gateway限流遇到的問題

    解決springcloud-gateway限流遇到的問題

    這篇文章主要介紹了解決springcloud-gateway限流遇到的問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • idea實(shí)現(xiàn)類快捷生成接口方法示例

    idea實(shí)現(xiàn)類快捷生成接口方法示例

    這篇文章主要介紹了idea實(shí)現(xiàn)類快捷生成接口方法示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • spring cloud 之 客戶端負(fù)載均衡Ribbon深入理解

    spring cloud 之 客戶端負(fù)載均衡Ribbon深入理解

    下面小編就為大家?guī)硪黄猻pring cloud 之 客戶端負(fù)載均衡Ribbon深入理解。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-06-06
  • Java Springboot如何基于圖片生成下載鏈接

    Java Springboot如何基于圖片生成下載鏈接

    這篇文章主要介紹了Java Springboot如何基于圖片生成下載鏈接,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03
  • java實(shí)現(xiàn)百度云OCR文字識(shí)別 高精度OCR識(shí)別身份證信息

    java實(shí)現(xiàn)百度云OCR文字識(shí)別 高精度OCR識(shí)別身份證信息

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)百度云OCR文字識(shí)別,高精度OCR識(shí)別身份證信息,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-11-11
  • sprintboot使用spring-security包,緩存內(nèi)存與redis共存方式

    sprintboot使用spring-security包,緩存內(nèi)存與redis共存方式

    這篇文章主要介紹了sprintboot使用spring-security包,緩存內(nèi)存與redis共存方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • Spring-Retry(重試機(jī)制)解讀

    Spring-Retry(重試機(jī)制)解讀

    這篇文章主要介紹了Spring-Retry(重試機(jī)制),具有很好的價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • SpringBoot使用POI進(jìn)行Excel下載

    SpringBoot使用POI進(jìn)行Excel下載

    這篇文章主要為大家詳細(xì)介紹了SpringBoot使用POI進(jìn)行Excel下載,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-09-09
  • IDEA連接mysql報(bào)錯(cuò)的問題及解決方法

    IDEA連接mysql報(bào)錯(cuò)的問題及解決方法

    這篇文章主要介紹了IDEA連接mysql報(bào)錯(cuò)的問題及解決方法,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-08-08
  • Java實(shí)現(xiàn)Promise.all()的示例代碼

    Java實(shí)現(xiàn)Promise.all()的示例代碼

    這篇文章主要介紹了Java實(shí)現(xiàn)Promise.all()的示例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-08-08

最新評論