定义服务器与所需组件、端口号等
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 注解