当前位置: 首页 > news >正文

阿里云-接入SLS日志

地址:

https://sls.console.aliyun.com/lognext/profile

创建project(存储日志的位置)

接入数据

java应用的业务日志

java应用集成LogService的SDK,上报日志

配置Slf4j的日志直接写入到SLS

添加依赖

<!-- https://mvnrepository.com/artifact/com.aliyun.openservices/aliyun-log-logback-appender --><dependency><groupId>com.aliyun.openservices</groupId><artifactId>aliyun-log-logback-appender</artifactId><version>0.1.18</version></dependency><!-- https://mvnrepository.com/artifact/com.alibaba.arms.apm/arms-sdk --><dependency><groupId>com.alibaba.arms.apm</groupId><artifactId>arms-sdk</artifactId><version>1.7.5</version></dependency><!-- https://mvnrepository.com/artifact/cn.hutool/hutool-core --><dependency><groupId>cn.hutool</groupId><artifactId>hutool-core</artifactId><version>5.8.38</version></dependency><!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 --><dependency><groupId>org.apache.commons</groupId><artifactId>commons-lang3</artifactId><version>3.17.0</version></dependency>

配置日志(直接把日志写入到SLS)

<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds" debug="false"><timestamp key="bySecond" datePattern="yyyyMMdd'T'HHmmss"/><appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"><encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"><pattern>%red(%d{yyyy-MM-dd HH:mm:ss}) %green([%thread]) [%X{traceId}] %highlight(%-5level) %boldMagenta(%logger{10}) - %cyan(%msg%n)</pattern></encoder></appender><appender name="aliyun" class="com.aliyun.openservices.log.logback.LoghubAppender"><endpoint>cn-hangzhou.log.aliyuncs.com</endpoint><accessKeyId>LTAI*********hAD7a</accessKeyId>           // 密钥管理申请<accessKeySecret>y*************ETp</accessKeySecret><project>arms-sls-test</project><logStore>arms-sls-logstore</logStore><topic>arms-sls-topic</topic><!-- Optional parameters --><totalSizeInBytes>104857600</totalSizeInBytes><maxBlockMs>0</maxBlockMs><ioThreadCount>8</ioThreadCount><batchSizeThresholdInBytes>524288</batchSizeThresholdInBytes><batchCountThreshold>4096</batchCountThreshold><lingerMs>2000</lingerMs><retries>10</retries><baseRetryBackoffMs>100</baseRetryBackoffMs><maxRetryBackoffMs>50000</maxRetryBackoffMs><timeFormat>yyyy-MM-dd'T'HH:mmZ</timeFormat><timeZone>Asia/Shanghai</timeZone><mdcFields>traceId</mdcFields></appender><root level="INFO"><appender-ref ref="STDOUT"/><appender-ref ref="aliyun"/></root>
</configuration>

获取traceId

package org.draymond.arms.utils;import jakarta.servlet.http.HttpServletRequest;import cn.hutool.core.lang.UUID;
import com.alibaba.arms.tracing.Span;
import com.alibaba.arms.tracing.Tracer;
import org.apache.commons.lang3.StringUtils;
public class TraceIdUtil {public static String getTraceIdHttpRequest(HttpServletRequest request) {Span span = Tracer.builder().getSpan();String traceId = span.getTraceId();if (StringUtils.isNotBlank(traceId)) {return traceId;} else {traceId = StringUtils.isBlank(request.getHeader("trace_id")) ? request.getHeader("traceId") : request.getHeader("trace_id");return StringUtils.isNotBlank(traceId) ? traceId : UUID.fastUUID().toString();}}public static String getTraceId() {Span span = Tracer.builder().getSpan();String traceId = span.getTraceId();return StringUtils.isNotBlank(traceId) ? traceId : UUID.fastUUID().toString();}
}

业务使用

@Slf4j
@Component
public class ArmsService {/*** 测试cpu占用** @param number* @return*/public ArmsModel cpuTest(Integer number) {MDC.put("traceId", TraceIdUtil.getTraceId());log.info("cpu测试, number={}", number);sleepNumberTime(number);ArmsModel build = ArmsModel.build(number);return build;}}

SLS效果

后续可以根据traceId查询分布式日志

arms中使用traceId查询调用链

全链路

http://www.lryc.cn/news/576731.html

相关文章:

  • 抗辐照芯片技术在商业卫星领域的应用与突破
  • C++ 第四阶段 STL 容器 - 第一讲:详解 std::vector
  • llama.cpp学习笔记:后端加载
  • M1芯片最终oracle成功版本拉取方法及配置
  • 【Linux庖丁解牛】— 文件系统!
  • JDK21 基于 Spring-AI 集成大模型实现聊天机器人
  • 【智能协同云图库】智能协同云图库第三弹:基于腾讯云 COS 对象存储—开发图片模块
  • Leetcode 3598. Longest Common Prefix Between Adjacent Strings After Removals
  • [database] Closure computation | e-r diagram | SQL
  • 【LeetCode 热题 100】560. 和为 K 的子数组——(解法二)前缀和+哈希表
  • swift-22-面向协议编程、响应式编程
  • SpringSecurity6-oauth2-三方gitee授权-授权码模式
  • 加密货币:USDC和比特币有什么区别?
  • web3区块链-ETH以太坊
  • 代理模式 - Flutter中的智能替身,掌控对象访问的每一道关卡!
  • aws(学习笔记第四十八课) appsync-graphql-dynamodb
  • Docker错误问题解决方法
  • Keil MDK 的 STM32 开发问题:重定向 printf 函数效果不生效(Keil MDK 中标准库未正确链接)
  • 基于springboot+vue的数字科技风险报告管理系统
  • 现代 JavaScript (ES6+) 入门到实战(一):告别 var!拥抱 let 与 const,彻底搞懂作用域
  • 领域驱动设计(DDD)【23】之泛化:从概念到实践
  • 网络缓冲区
  • DOP数据开放平台(真实线上项目)
  • 马斯克的 Neuralink:当意念突破肉体的边界,未来已来
  • Word之电子章制作——1
  • 【编译原理】期末
  • 华为云Flexus+DeepSeek征文|利用华为云一键部署的Dify平台构建高效智能电商客服系统实战
  • Youtube双塔模型
  • C++共享型智能指针std::shared_ptr使用介绍
  • cocos creator 3.8 - 精品源码 - 挪车超人(挪车消消乐)