定義服務器與所需組件、端口號等
mysql 3306、redis 15672、elasticsearch 9200
搭建 elasticsearch
注意使用 es 用戶啟動,es-web 端使用 elastic 用戶登錄;項目沒有元數據存儲,使用 redis 當做數據隊列,推到 es 至頁面顯示;
推數據的兩種方式
接口推送
dtTime 的時間戳要到毫秒級別
curl --location --request POST '/sendLog?logKey=_log_list' \
--header 'Content-Type: application/json' \
--header 'Cookie: JSESSIONID=node010si6maciiszh1bhg7wynmku264.node0' \
--data-raw ' [
{
"appName":"應用名稱",
"serverName":"服務器IP地址",
"dtTime":"1704265191000",
"traceId":"001",
"content":"日志內容",
"logLevel":"INFO",
"className":"產生日志的類名",
"method":"產生日志的方法",
"logType":"1",
"dateTime":"2024-01-03 14:59:10"
},{
"appName":"應用名稱",
"serverName":"服務器IP地址",
"dtTime":"1704265191000",
"traceId":"001",
"content":"日志內容",
"logLevel":"ERROR",
"className":"產生日志的類名",
"method":"產生日志的方法",
"logType":"1",
"dateTime":"2024-01-03 14:58:10"
}
]'
|
logback 推送
客戶端引包 都放到最小項目的 pom
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-sleuth</artifactId>
</dependency>
<dependency>
<groupId>com.log</groupId>
<artifactId>log-trace</artifactId>
<version>3.5.3</version>
</dependency>
<dependency>
<groupId>com.log</groupId>
<artifactId>log-logback</artifactId>
<version>3.5.3</version>
</dependency>
|
logback-spring 配置
<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false">
<conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter"/>
<conversionRule conversionWord="wex"
converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter"/>
<conversionRule conversionWord="wEx"
converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter"/>
<!-- 彩色日志格式 -->
<property name="CONSOLE_LOG_PATTERN"
value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
<!--輸出到控制臺-->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<!--過濾trace日志到控制臺-->
<filter class="com.log.logback.util.FilterSyncLogger">
<level></level>
</filter>
<encoder>
<Pattern>${CONSOLE_LOG_PATTERN}</Pattern>
<!-- 設置字符集 -->
<charset>UTF-8</charset>
</encoder>
</appender>
<!-- 輸出到文件 -->
<appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<FileNamePattern>logs/log-demo.log.%d{yyyy-MM-dd}.log</FileNamePattern>
<MaxHistory>3</MaxHistory>
</rollingPolicy>
<encoder>
<Pattern>${CONSOLE_LOG_PATTERN}</Pattern>
<!-- 設置字符集 -->
<charset>UTF-8</charset>
</encoder>
</appender>
<!-- 配置日志輸出,只輸出info,只保留控制臺和log輸出-->
<!-- 正常開發環境本地,只輸出到控制臺,測試環境只輸出到log,生產環境輸出到本地文件log,因為有log加持本地文件就保留3天即可-->
<!-- 這些都可以根據環境配置不同加載不同的ref -->
<root level="info">
<!--輸出到控制臺-->
<appender-ref ref="CONSOLE"/>
<!-- 輸出到文件 -->
<appender-ref ref="file"/>
<!-- 輸出 log -->
<appender-ref ref="log"/>
</root>
|
鏈路追蹤
引包 —— 在需要引入 TraceId 的 pom 里面加
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-sleuth</artifactId>
</dependency>
<dependency>
<groupId>com.log</groupId>
<artifactId>log-trace</artifactId>
<version>3.5.3</version>
</dependency>
|
啟動類 —— 加掃描包類
@ComponentScan(basePackages={"cn.ctyun..","com.log"})
controller 和 service 都需要加上 @Trace 注解