新聞中心
目錄:
創(chuàng)新互聯(lián)建站專注于福海企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站建設(shè),電子商務(wù)商城網(wǎng)站建設(shè)。福海網(wǎng)站建設(shè)公司,為福海等地區(qū)提供建站服務(wù)。全流程定制設(shè)計(jì),專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)建站專業(yè)和態(tài)度為您提供的服務(wù)
1.?SpringBoot集成和配置LogBack
2.?封裝LogUtil,集中處理日志
3.?SpringBoot集成LogStash
4.?單獨(dú)安裝配置LogStash
5.?docker-compose一鍵部署ELK,簡(jiǎn)單任性
6.?常見問題和解決方法
日志在系統(tǒng)中至關(guān)重要,尤其是生產(chǎn)環(huán)境,一旦出現(xiàn)問題,首先是日志中的錯(cuò)誤信息觸發(fā)預(yù)警系統(tǒng),然后通過郵件、短信甚至電話通知的方式報(bào)警給系統(tǒng)負(fù)責(zé)人。在排查修復(fù)問題階段,開發(fā)測(cè)試人員通常也要查看系統(tǒng)日志,分析故障原因。
ELK是常用的日志處理系統(tǒng),SpringBoot集成LogBack和LogStash非常方便,配置LogBack將日志發(fā)送給LogStash。
?
代碼下載:https://github.com/jextop/StarterApi/
一,SpringBoot集成和配置LogBack
SpringBoot默認(rèn)使用SLF4J和LogBack,可在application.yml中定制配置。
代碼文件 | 功能要點(diǎn) | |
SpringBoot集成SLF4J和LogBack | pom.xml | 引入log依賴:spring-boot-starter-logging,注:spring-boot-starter和spring-boot-starter-web已經(jīng)引入了spring-boot-starter-logging |
application.yml | 定制配置log屬性 | |
封裝LogUtil | LogUtil.java | 集中處理日志 |
LogUtilTest.java | 單元測(cè)試log輸出 | |
功能調(diào)用 | xxx.java | 調(diào)用LogUtil函數(shù),如LogUtil.info() |
1.?spring-boot-starter和spring-boot-starter-web默認(rèn)引入了SLF4J和LogBack依賴。如果需要單獨(dú)引入,可在pom.xml中添加spring-boot-starter-logging
??
??
2.?在application.yml中定制配置log屬性:
logging.level:指定package的輸出日志級(jí)別,可選:debug, info, warn, error
logging.file.path:指定日志文件路徑
logging.file.max-size:指定單個(gè)文件大小,超過時(shí)將滾動(dòng)生成多個(gè)文件
logging.file.max-history:指定歸檔日志文件保留的最長(zhǎng)歷史記錄
logging.pattern.console:輸出到console工作臺(tái)的日志格式
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集中處理日志
?
2. 單元測(cè)試LogUtil
@SpringBootTest(classes= StarterApplication.class)
public classLogUtilTest {
????@Test
????public voidtestLog() {
????????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.?代碼中調(diào)用LogUtil
- 調(diào)用LogUtil.info(“xxx”)
??LogUtil.info("Check cache to set str",key,str);
- Console工作臺(tái)和日志文件輸出:
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輸出的信息中l(wèi)ogger都是LogUtil,如果需要不同的類中使用不同的logger,那么就請(qǐng)?jiān)陬愔袆?chuàng)建自己的logger:
private static finalLoggerlog= LoggerFactory.getLogger(LogUtil.class);
三,SpringBoot集成LogStash
代碼文件 | 功能要點(diǎn) | |
SpringBoot集成LogStash | pom.xml | 引入LogStash依賴:logstash-logback-encoder |
logback.xml | 配置LogStash日志格式 | |
application.yml | 引用logback.xml配置 | |
啟動(dòng)LogStash | 安裝包bin目錄 | 配置logstash.conf,啟動(dòng)logstash -f logstash.conf |
1.?在pom.xml中添加LogStash依賴
????
????
????
2.?在resouces目錄下添加logback.xml
????
????
????????
????????
????
????
????????
????
3.?在application.yml中引用logback.xml配置:
logging:
??config:classpath:logback.xml
四,單獨(dú)安裝配置LogStash
1.下載LogStash:https://www.elastic.co/downloads/logstash
官網(wǎng)慢時(shí)可用網(wǎng)盤:https://pan.baidu.com/s/1b-czkB8z5aL6rdxZtBmNEw?提取碼: arfb
2.?配置:在bin目錄下添加logstash.conf:
input.tcp.host可設(shè)置本機(jī)ip
input.tcp.port設(shè)置端口
output.elasticsearch.hosts設(shè)置輸出地址
input{
????tcp {
????????mode => "server"
????????host => "0.0.0.0"
????????port => 9600
????????codec => json_lines
????}
}
output{
????stdout{
???????codec => rubydebug
????}
????elasticsearch {
???????hosts => ["elasticsearch:9200"]
????}
}
3.?啟動(dòng):logstash -f logstash.conf,看到端口信息提示,運(yùn)行成功
4.?運(yùn)行Spring項(xiàng)目,LogStash將收到日志信息
?
五,docker-compose一鍵部署ELK
ELK是常用的日志管理系統(tǒng),使用Docker-compose一鍵部署,省去安裝配置的繁瑣步驟。
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服務(wù):
logstash和kibana需要連接elasticsearch實(shí)例,所以設(shè)置了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拉取鏡像
可直接運(yùn)行docker pull elasticsearch:latest拉取鏡像,docker images查看:
5.?up.sh啟動(dòng)容器
腳本中封裝了docker-compose up -d命令,啟動(dòng)后運(yùn)行docker ps查看容器實(shí)例:
6.?logs.sh查看ELK運(yùn)行日志
定制命令突出顯示重要信息:
docker-compose logs -ft | grep --color -i -e error -e warn -e version -e exception
7.?down.sh停止服務(wù)
docker-compose down --remove-orphans停止并刪除容器:
8.?查看ELK服務(wù):
- elasticsearch:
- logstsh:
- kibana:
使用docker-compose一鍵部署ELK,就是這么簡(jiǎn)單任性。
五,常見問題和解決方法
l?多個(gè)log框架沖突,項(xiàng)目啟動(dòng)時(shí)出現(xiàn)信息:SLF4J: Class path contains multiple SLF4J bindings
原因:項(xiàng)目依賴的jar包中引入了別的log框架比如log4j
解決:pom.xml中引入依賴時(shí)配置exclude,將不需要的log4j排除
????
????????
????????
????
文章名稱:【從0開始Web開發(fā)實(shí)戰(zhàn)】SpringBoot集成LogBack和LogStash
標(biāo)題來源:http://fisionsoft.com.cn/article/gcggjs.html