中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

【從0開始Web開發實戰】SpringBoot集成LogBack和LogStash

發布時間:2020-03-09 12:53:53 來源:網絡 閱讀:3749 作者:jextop 欄目:軟件技術

目錄:

1.?SpringBoot集成和配置LogBack

2.?封裝LogUtil,集中處理日志

3.?SpringBoot集成LogStash

4.?單獨安裝配置LogStash

5.?docker-compose一鍵部署ELK,簡單任性

6.?常見問題和解決方法


日志在系統中至關重要,尤其是生產環境,一旦出現問題,首先是日志中的錯誤信息觸發預警系統,然后通過郵件、短信甚至電話通知的方式報警給系統負責人。在排查修復問題階段,開發測試人員通常也要查看系統日志,分析故障原因。


ELK是常用的日志處理系統,SpringBoot集成LogBack和LogStash非常方便,配置LogBack將日志發送給LogStash。

【從0開始Web開發實戰】SpringBoot集成LogBack和LogStash?

代碼下載:https://github.com/jextop/StarterApi/


一,SpringBoot集成和配置LogBack

SpringBoot默認使用SLF4J和LogBack,可在application.yml中定制配置。


代碼文件

功能要點

SpringBoot集成SLF4J和LogBack

pom.xml

引入log依賴spring-boot-starter-logging,注:spring-boot-starter和spring-boot-starter-web已經引入了spring-boot-starter-logging

application.yml

定制配置log屬性

封裝LogUtil

LogUtil.java

集中處理日志

LogUtilTest.java

單元測試log輸出

功能調用

xxx.java

調用LogUtil函數,如LogUtil.info()

1.?spring-boot-starter和spring-boot-starter-web默認引入了SLF4J和LogBack依賴。如果需要單獨引入,可pom.xml中添加spring-boot-starter-logging

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


2.?application.yml中定制配置log屬性:

logging.level:指定package的輸出日志級別,可選:debug, info, warn, error

logging.file.path:指定日志文件路徑

logging.file.max-size:指定單個文件大小,超過時將滾動生成多個文件

logging.file.max-history:指定歸檔日志文件保留的最長歷史記錄

logging.pattern.console:輸出到console工作臺的日志格式

logging.pattern.file:輸出到日志文件的格式

logging:
??level:
????com.starter: info
??file:
????path: logs
????max-size: 10MB
????max-history: 7
??pattern:
????console: "%d %-5level [%thread] %logger : %msg%n"
????file: "%d %-5level [%thread] %logger : %msg%n"


二,封裝LogUtil.java集中處理日志

1. LogUtil集中處理日志

【從0開始Web開發實戰】SpringBoot集成LogBack和LogStash?


2. 單元測試LogUtil

@SpringBootTest(classes = StarterApplication.class)
public class LogUtilTest {
????@Test
????public void testLog() {
????????LogUtil.debug("debug", "message.");
????????LogUtil.info("info", "message.");
????????LogUtil.warn("warn", "message.");
????????LogUtil.error("error", "message.");
????}
}

輸出日志:

2020-01-31 14:21:13,796 INFO ?[main] com.common.util.LogUtil : info, message.

2020-01-31 14:21:13,796 WARN ?[main] com.common.util.LogUtil : warn, message.

2020-01-31 14:21:13,796 ERROR [main] com.common.util.LogUtil : error, message.


3.?代碼中調用LogUtil

- 調用LogUtil.info(xxx)

??LogUtil.info("Check cache to set str", key, str);

- Console工作臺和日志文件輸出:

2020-01-31 14:19:02,438 INFO ?[http-nio-8011-exec-2] com.common.util.LogUtil : Check cache to set str, cache_test_192.168.3.9_200131014871354985900257_緩存, cache_test_192.168.3.9_200131014871354985900257_緩存

注意:LogUtil輸出的信息中logger都是LogUtil,如果需要不同的類中使用不同的logger,那么就請在類中創建自己的logger:

private static final Logger log = LoggerFactory.getLogger(LogUtil.class);


三,SpringBoot集成LogStash


代碼文件

功能要點

SpringBoot集成LogStash

pom.xml

引入LogStash依賴logstash-logback-encoder

logback.xml

配置LogStash日志格式

application.yml

引用logback.xml配置

啟動LogStash

安裝包bin目錄

配置logstash.conf,啟動logstash -f logstash.conf

1.?pom.xml中添加LogStash依賴

<dependency>
????<groupId>net.logstash.logback</groupId>
????<artifactId>logstash-logback-encoder</artifactId>
????<version>5.1</version>
</dependency>

2.?resouces目錄下添加logback.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
????<include resource="org/springframework/boot/logging/logback/base.xml"/>

????<appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
????????<destination>127.0.0.1:9600</destination>
????????<encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder"/>
????</appender>

????<root level="INFO">
????????<appender-ref ref="LOGSTASH"/>
????</root>
</configuration>

3.?application.yml中引用logback.xml配置:

logging:
??config: classpath:logback.xml


四,單獨安裝配置LogStash

1. 下載LogStashhttps://www.elastic.co/downloads/logstash

官網慢時可用網盤:https://pan.baidu.com/s/1b-czkB8z5aL6rdxZtBmNEw?提取碼: arfb

2.?配置:在bin目錄下添加logstash.conf:

input.tcp.host可設置本機ip

input.tcp.port設置端口

output.elasticsearch.hosts設置輸出地址

input{
????tcp {
????????mode => "server"
????????host => "0.0.0.0"
????????port => 9600
????????codec => json_lines
????}
}
output{
????stdout{
???????codec => rubydebug
????}
????elasticsearch {
???????hosts => ["elasticsearch:9200"]
????}
}

3.?啟動:logstash -f logstash.conf,看到端口信息提示,運行成功

【從0開始Web開發實戰】SpringBoot集成LogBack和LogStash

4.?運行Spring項目LogStash將收到日志信息

【從0開始Web開發實戰】SpringBoot集成LogBack和LogStash?

五,docker-compose一鍵部署ELK

ELK是常用的日志管理系統,使用Docker-compose一鍵部署,省去安裝配置的繁瑣步驟。

【從0開始Web開發實戰】SpringBoot集成LogBack和LogStash

1.?Docker安裝:

https://docs.docker.com/install/linux/docker-ce/ubuntu/

https://docs.docker.com/docker-for-windows/install/


2.?腳本下載:

https://github.com/rickding/HelloDocker/tree/master/elk

├── docker-compose.yml

├── pull.sh

├── up.sh

├── logs.sh

├── down.sh


3.?docker-compose.yml腳本配置ELK服務:

logstash和kibana需要連接elasticsearch實例,所以設置了depends_on屬性。

version: '3'
services:
????elasticsearch:
????????hostname: elasticsearch
????????image: elasticsearch:latest
????????ports:
????????????- 9200:9200
????????????- 9300:9300

????log:
????????image: registry.cn-shanghai.aliyuncs.com/hellodock/logstash:latest
????????ports:
????????????- 9600:9600
????????????- 9601:9601
????????depends_on:
????????????- elasticsearch

????kibana:
????????image: registry.cn-shanghai.aliyuncs.com/hellodock/kibana:latest
????????ports:
????????????- 5601:5601
????????depends_on:
????????????- elasticsearch

4.?pull.sh拉取鏡像

可直接運行docker pull elasticsearch:latest拉取鏡像,docker images查看:

【從0開始Web開發實戰】SpringBoot集成LogBack和LogStash

5.?up.sh啟動容器

腳本中封裝了docker-compose up -d命令,啟動后運行docker ps查看容器實例:

【從0開始Web開發實戰】SpringBoot集成LogBack和LogStash

6.?logs.sh查看ELK運行日志

定制命令突出顯示重要信息:

docker-compose logs -ft | grep --color -i -e error -e warn -e version -e exception

【從0開始Web開發實戰】SpringBoot集成LogBack和LogStash

7.?down.sh停止服務

docker-compose down --remove-orphans停止并刪除容器:

【從0開始Web開發實戰】SpringBoot集成LogBack和LogStash

8.?查看ELK服務:

- elasticsearch:

【從0開始Web開發實戰】SpringBoot集成LogBack和LogStash

- logstsh:

【從0開始Web開發實戰】SpringBoot集成LogBack和LogStash

- kibana:

【從0開始Web開發實戰】SpringBoot集成LogBack和LogStash

使用docker-compose一鍵部署ELK,就是這么簡單任性。


五,常見問題和解決方法

l?多個log框架沖突,項目啟動時出現信息:SLF4J: Class path contains multiple SLF4J bindings

原因:項目依賴的jar包中引入了別的log框架比如log4j

解決:pom.xml中引入依賴時配置exclude,將不需要的log4j排除

<exclusions>
????<exclusion>
????????<groupId>org.slf4j</groupId>
????????<artifactId>slf4j-log4j12</artifactId>
????</exclusion>
</exclusions>


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

漾濞| 固阳县| 广元市| 自治县| 军事| 云浮市| 会昌县| 怀仁县| 武定县| 闵行区| 清远市| 屯留县| 黔江区| 海原县| 巨鹿县| 禹城市| 蕉岭县| 巩留县| 宽城| 武威市| 布尔津县| 明光市| 蓝田县| 渭南市| 成都市| 镇远县| 灌阳县| 乳山市| 苏尼特右旗| 吴旗县| 黄冈市| 林口县| 扎赉特旗| 当涂县| 高清| 咸丰县| 抚宁县| 株洲县| 永福县| 奎屯市| 澎湖县|