这个场景是,日志系统平时为了系统处理能力,我们使用INFO级别或ERROR级别,当发现问题时,我们需要不停服务的动态的将日志级别变更为DEBUG以便在执行细节发现问题,下面列举了动态变更的操作,需要借助代码、定时和配置中心服务。
网站建设哪家好,找成都创新互联公司!专注于网页设计、网站建设、微信开发、微信小程序、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了红岗免费建站欢迎大家使用!
在微服务的场景,日志是散落在各个服务集群节点中,不方便查看,所以我们需要通过集中收集到一处保存、查看和分析。
logback.xml
具体配置如下:
%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}
/**
* 日志级别更新定时2分钟一刷新
*/
@Scheduled(fixedRate=1000*60*2)
public void refresh() {
String moduleKey = "com.ftsafe";
//判断只有logback的日志实现才适用此方法
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!");
}
是一个搜索和分析引擎
解压
https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.0.0.zip
启动
d:/baiduYun/java/elasticsearch-6.0.0/bin/elasticsearch.bat
允许用户在 Elasticsearch 中使用图表和图表可视化数据
解压
https://artifacts.elastic.co/downloads/kibana/kibana-6.0.0-windows-x86_64.zip
启动
d:/baiduYun/java/kibana-6.0.0-windows-x86_64/bin/kibana.bat
是一个服务器端的数据处理管道,可以同时从多个源获取数据,将其转换为Elasticsearch之类的“stash”
解压
https://artifacts.elastic.co/downloads/logstash/Logstash-6.0.0.zip
配置logstash.conf配置文件内容
input {
tcp {
port => 4560
host => localhost
}
}
output {
elasticsearch { hosts => ["localhost:9200"] }
stdout { codec => rubydebug }
}
启动
d:/baiduYun/java/logstash-6.0.0/bin/logstash.bat -f d:\baiduYun\java\logstash-6.0.0\bin\logstash.conf
访问http://localhost:5601进入kibana界面,可以在Discover界面输入检索条件,查出希望检索到的内容。
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}