新聞中心
日志分析實(shí)踐與應(yīng)用
這個(gè)場(chǎng)景是,日志系統(tǒng)平時(shí)為了系統(tǒng)處理能力,我們使用INFO級(jí)別或ERROR級(jí)別,當(dāng)發(fā)現(xiàn)問題時(shí),我們需要不停服務(wù)的動(dòng)態(tài)的將日志級(jí)別變更為DEBUG以便在執(zhí)行細(xì)節(jié)發(fā)現(xiàn)問題,下面列舉了動(dòng)態(tài)變更的操作,需要借助代碼、定時(shí)和配置中心服務(wù)。
網(wǎng)站建設(shè)哪家好,找成都創(chuàng)新互聯(lián)公司!專注于網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、微信小程序、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了紅崗免費(fèi)建站歡迎大家使用!
在微服務(wù)的場(chǎng)景,日志是散落在各個(gè)服務(wù)集群節(jié)點(diǎn)中,不方便查看,所以我們需要通過集中收集到一處保存、查看和分析。
應(yīng)用程序中日志的配置
logback.xml
- 1.在configuration中配置include,引用defaults.xml、console-appender.xml和file-appender.xml基礎(chǔ)配置,可以復(fù)用變量、默認(rèn)配置和策略。
- 2.定義一個(gè)stash的appender,配置目標(biāo)主機(jī)和端口以及轉(zhuǎn)碼器用什么。通過配置將日志發(fā)送到統(tǒng)一日志管理平臺(tái)進(jìn)一步分析與保存。
- 注:對(duì)于推薦使用logback-spring.xml不使用logback.xml,官方也沒有給出推薦理由,經(jīng)測(cè)試logback.xml配置依然可用,也可以在變更后自動(dòng)重啟,所以沒換,只是注意configuration屬性scan不能設(shè)置為true,由spring來掃描即可。
具體配置如下:
%d{yyyy-MM-dd HH:mm:ss} [%level] - %m%n
d:/logs/error.log
%d{yyyy-MM-dd HH:mm:ss} [%class:%line] - %m%n
ERROR
ACCEPT
DENY
error.%d{yyyy-MM-dd}.log
30
localhost:4560
${fluentHost}
定時(shí)更新日志代碼
/**
* 日志級(jí)別更新定時(shí)2分鐘一刷新
*/
@Scheduled(fixedRate=1000*60*2)
public void refresh() {
String moduleKey = "com.ftsafe";
//判斷只有l(wèi)ogback的日志實(shí)現(xiàn)才適用此方法
if (log instanceof ch.qos.logback.classic.Logger) {
Config applicationConfig = ConfigService.getAppConfig();
String levelConfig = applicationConfig.getProperty("logger.level."+ moduleKey, null);
ch.qos.logback.classic.Logger classicLog = (ch.qos.logback.classic.Logger) log;
ch.qos.logback.classic.Logger logger = classicLog.getLoggerContext().getLogger(moduleKey);
logger.setLevel(Level.toLevel(levelConfig));
log.debug("logger modify level {}", levelConfig);
log.info("logger modify level {}", levelConfig);
}
log.info("logger refresh invoked!");
log.debug("logger refresh invoked!");
}
集中日志管理(win環(huán)境)
Elasticsearch
是一個(gè)搜索和分析引擎
解壓
https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.0.0.zip
啟動(dòng)
d:/baiduYun/java/elasticsearch-6.0.0/bin/elasticsearch.bat
Kibana
允許用戶在 Elasticsearch 中使用圖表和圖表可視化數(shù)據(jù)
解壓
https://artifacts.elastic.co/downloads/kibana/kibana-6.0.0-windows-x86_64.zip
啟動(dòng)
d:/baiduYun/java/kibana-6.0.0-windows-x86_64/bin/kibana.bat
logstash
是一個(gè)服務(wù)器端的數(shù)據(jù)處理管道,可以同時(shí)從多個(gè)源獲取數(shù)據(jù),將其轉(zhuǎn)換為Elasticsearch之類的“stash”
解壓
https://artifacts.elastic.co/downloads/logstash/Logstash-6.0.0.zip
配置logstash.conf配置文件內(nèi)容
input {
tcp {
port => 4560
host => localhost
}
}
output {
elasticsearch { hosts => ["localhost:9200"] }
stdout { codec => rubydebug }
}
啟動(dòng)
d:/baiduYun/java/logstash-6.0.0/bin/logstash.bat -f d:\baiduYun\java\logstash-6.0.0\bin\logstash.conf
瀏覽日志
訪問http://localhost:5601進(jìn)入kibana界面,可以在Discover界面輸入檢索條件,查出希望檢索到的內(nèi)容。
附錄:
spring logging
https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-logging.html
defaults.xml
console-appender.xml
${CONSOLE_LOG_PATTERN}
file-appender.xml
${FILE_LOG_PATTERN}
${LOG_FILE}
${LOG_FILE}.%d{yyyy-MM-dd}.%i.gz
${LOG_FILE_MAX_SIZE:-10MB}
${LOG_FILE_MAX_HISTORY:-0}
參考內(nèi)容
- https://www.jianshu.com/p/c9d9fe37256a
- 《51CTO下載-SpringCloud微服務(wù)架構(gòu)開發(fā)實(shí)戰(zhàn).pdf》
當(dāng)前文章:日志分析實(shí)踐與應(yīng)用
分享網(wǎng)址:http://www.ef60e0e.cn/article/ghhgji.html