如何管理微服務日誌
通過logback拓展組件,將所有微服務日誌蒐集到es,按天建索引,通過kibana展示
1.引入maven依賴
<dependency>
<groupId>com.internetitem</groupId>
<artifactId>logback-elasticsearch-appender</artifactId>
<version>1.6</version>
</dependency>
2.引入logback.xml配置
<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false">
<appender name="ELASTIC" class="com.internetitem.logback.elasticsearch.ElasticsearchAppender">
<url>http://${log.hostname:-localhost}:${log.port:-8080}/_bulk</url>
<index>logs-%date{yyyy-MM-dd}</index>
<type>log</type>
<loggerName>es-logger</loggerName> <!-- optional -->
<errorLoggerName>es-error-logger</errorLoggerName> <!-- optional -->
<connectTimeout>30000</connectTimeout> <!-- optional (in ms, default 30000) -->
<errorsToStderr>false</errorsToStderr> <!-- optional (default false) -->
<includeCallerData>false</includeCallerData> <!-- optional (default false) -->
<logsToStderr>false</logsToStderr> <!-- optional (default false) -->
<maxQueueSize>104857600</maxQueueSize> <!-- optional (default 104857600) -->
<maxRetries>3</maxRetries> <!-- optional (default 3) -->
<readTimeout>30000</readTimeout> <!-- optional (in ms, default 30000) -->
<sleepTime>250</sleepTime> <!-- optional (in ms, default 250) -->
<rawJsonMessage>false</rawJsonMessage> <!-- optional (default false) -->
<includeMdc>false</includeMdc> <!-- optional (default false) -->
<maxMessageSize>100</maxMessageSize> <!-- optional (default -1 -->
<authentication class="com.internetitem.logback.elasticsearch.config.BasicAuthentication" /> <!-- optional -->
<properties>
<property>
<name>app</name>
<value>${spring.application.name:defaultApp}</value>
<allowEmpty>false</allowEmpty>
</property>
<property>
<name>host</name>
<value>${HOSTNAME}</value>
<allowEmpty>false</allowEmpty>
</property>
<property>
<name>severity</name>
<value>%level</value>
</property>
<property>
<name>thread</name>
<value>%thread</value>
</property>
<property>
<name>stacktrace</name>
<value>%ex</value>
</property>
<property>
<name>logger</name>
<value>%logger</value>
</property>
</properties>
<headers>
<header>
<name>Content-Type</name>
<value>application/json</value>
</header>
</headers>
</appender>
<include resource="org/springframework/boot/logging/logback/defaults.xml" />
<property name="LOG_FILE" value="${LOG_FILE:-${LOG_PATH:-${LOG_TEMP:-${java.io.tmpdir:-/tmp}}}/spring.log}"/>
<include resource="org/springframework/boot/logging/logback/console-appender.xml" />
<include resource="org/springframework/boot/logging/logback/file-appender.xml" />
<root level="INFO">
<appender-ref ref="ELASTIC" />
<appender-ref ref="CONSOLE" />
<appender-ref ref="FILE" />
</root>
<logger name="es-error-logger" level="INFO" additivity="false">
<appender-ref ref="CONSOLE" />
</logger>
<logger name="es-logger" level="ERROR" additivity="false">
<appender-ref ref="CONSOLE" />
</logger>
<!-- <logger name="es-logger" level="INFO" additivity="false">
<appender name="ES_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
...
<encoder>
<pattern>%msg</pattern> This pattern is important, otherwise it won't be the raw Elasticsearch format anyomre
</encoder>
</appender>
</logger> -->
</configuration>
3 修改logback配置的兩種方式
第一種:修改logback配置文件中的localhost爲es的ip,8080爲es的http端口,defaultApp爲自己的微服務名稱
第二種:啓動jar包時指定配置,java -Dlog.hostname=es的ip -Dlog.port=es的http端口 -Dspring.application.name=服務名 -jar xxx.jar