阿里云 日志服务sls 日志展示一行一行的 (已解决)

本文介绍如何在Logstore中通过添加logtail配置来解决日志展示单一导致排查困难的问题,提供'BeginLineCheckLength'、'SourceKey'和'BeginLineRegex'的具体设置方法。

问题描述

在这里插入图片描述
原本应该是 一大块的错误日志,但是采集展示出来的,只有一行,让我们排查问题 很困难。

解决方案

在logstore中添加logtail配置:

“BeginLineCheckLength”: 10,
“SourceKey”: “content”,
“BeginLineRegex”: “\d±\d±\d+.*”

<think>我们正在将Spring Boot应用的日志输出方式从阿里云SLS改为Logback。根据引用[2],我们知道Spring Boot默认使用Logback作为日志框架。因此,我们需要做的是移除阿里云SLS日志配置,并配置Logback。 步骤: 1. 移除阿里云SLS依赖:在pom.xml中移除或注释掉阿里云SLS相关的依赖。 2. 添加Logback依赖:通常Spring Boot starter已经包含Logback,无需额外添加,但需要确认。 3. 配置Logback:在classpath下创建logback-spring.xml文件,并配置Logback的日志输出格式、输出目标(如控制台、文件等)。 4. 移除阿里云SLS配置:删除之前配置阿里云SLS的相关代码或配置。 5. 测试:启动应用,检查日志是否按照Logback配置输出。 详细步骤: 1. 移除依赖: 在pom.xml中找到类似以下阿里云SLS的依赖并移除: ```xml <!-- 移除类似这样的依赖 --> <dependency> <groupId>com.aliyun.openservices</groupId> <artifactId>aliyun-log-logback-appender</artifactId> <version>${aliyun.logback.appender.version}</version> </dependency> ``` 2. 确认Logback依赖:Spring Boot的spring-boot-starter-web或spring-boot-starter已经包含Logback,所以无需额外添加。 3. 创建Logback配置文件: 在src/main/resources目录下创建logback-spring.xml文件。内容可以参考Spring Boot默认的Logback配置,并根据需要调整。 示例logback-spring.xml: ```xml <?xml version="1.0" encoding="UTF-8"?> <configuration> <!-- 引入Spring Boot的默认Logback配置 --> <include resource="org/springframework/boot/logging/logback/defaults.xml"/> <!-- 定义应用名称 --> <property name="APP_NAME" value="your-application-name"/> <!-- 定义日志文件路径 --> <property name="LOG_PATH" value="logs/${APP_NAME}"/> <!-- 控制台输出 --> <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern> </encoder> </appender> <!-- 文件输出 --> <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${LOG_PATH}/application.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <!-- 按天和大小滚动 --> <fileNamePattern>${LOG_PATH}/application.%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern> <maxFileSize>100MB</maxFileSize> <maxHistory>30</maxHistory> <totalSizeCap>1GB</totalSizeCap> </rollingPolicy> <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern> </encoder> </appender> <!-- 日志级别 --> <root level="INFO"> <appender-ref ref="CONSOLE"/> <appender-ref ref="FILE"/> </root> </configuration> ``` 4. 移除阿里云SLS的配置:检查之前的配置,比如在logback.xml中可能配置了阿里云的Appender,现在需要删除这些配置。同时,检查application.properties或application.yml中是否有阿里云SLS的配置,也一并删除。 5. 测试:启动应用,查看控制台和日志文件是否正常输出日志。 注意:根据引用[1],我们也可以使用<include>来引入Spring Boot的默认配置,如上例所示。 如果之前使用了阿里云SLS日志降级过滤器(如示例中的LogDegradeFilter),并且现在不需要了,可以移除。如果需要保留,则确保该过滤器与Logback兼容。 以上步骤完成后,日志将不再发送到阿里云SLS,而是按照Logback配置输出到控制台和文件。 如果遇到问题,可以查看Spring Boot官方文档关于日志配置的部分[^2][^4]。 参考文献: [^1]: 在logback的xml配置文件中,一行代码即可接入 <configuration> <!-- https://github.com/spring-projects/spring-boot/blob/v1.5.13.RELEASE/spring-boot/src/main/resources/org/springframework/boot/logging/logback/defaults.xml --> <include resource="org/springframework/boot/logging/logback/defaults.xml"/> <!--降级功能:通用日志降级过滤器--> <turboFilter class="com.test.LogDegradeFilter" /> 。。。。。。。 [^2]: 上文说了日志的重要性,那么什么时候需要记录日志。系统初始化:系统或者服务的启动参数。核心模块或者组件初始化过程中往往依赖一些关键配置,根据参数不同会提供不一样的服务。务必在这里记录 INFO 日志,打印出参数以及启动完成态服务表述。编程语言提示异常:如今各类主流的编程语言都包括异常机制,业务相关的流行框架有完整的异常模块。这类捕获的异常是系统告知开发人员需要加以关注的,是质量非常高的报错。应当适当记录日志,根据实际结合业务的情况使用 WARN 或者 ERROR 级别。业务流程预期不符:除开平台以及编程语言异常之外,项目代码中结果与期望不符时也是日志场景之一,简单来说所有流程分支都可以加入考虑。取决于开发人员判断能否容忍情形发生。常见的合适场景包括外部参数不正确,数据处理问题导致返回码不在合理范围内等等。系统核心角色,组件关键动作:系统中核心角色触发的业务动作是需要多加关注的,是衡量系统正常运行的重要指标,建议记录 INFO 级别日志,比如电商系统用户从登录到下单的整个流程;微服务各服务节点交互;核心数据表增删改;核心组件运行等等,如果日志频度高或者打印量特别大,可以提炼关键点 INFO 记录,其余酌情考虑 DEBUG 级别。第三方服务远程调用:微服务架构体系中有一个重要的点就是第三方永远不可信,对于第三方服务远程调用建议打印请求和响应的参数,方便在和各个终端定位问题,不会因为第三方服务日志的缺失变得手足无措。2. 日志打印2.1 Slf4j & Logback [^4]: 注意:请勿按照应用服务区分为不同的 logstore,在微服务架构中,一次请求交叉了多个应用服务,日志是散落在各个应用服务中的,按照服务区分 logstore,需要开发同学十分了解应用运行状况和调用拓扑图,这点往往是不具备的。 特定格式日志可按格式创建索引更方便聚焦查询分析和告警,如根据 take-time,http-status,biz-code 等值。参考文献Java日志记录最佳实践 :https://www.jianshu.com/p/546e9aace657)别在 Java 代码里乱打日志了,这才是打印日志的正确姿势!:https://mp.weixin.qq.com/s/hJvkRlt9xQbWhYy1G7ZDsw阿里云日志服务:https://help.aliyun.com/product/28958.html?spm=a2c4g.11186623.3.1.7cfd735dv8i1pBSpring Boot Logging:https://docs.spring.io/spring-boot/docs/2.2.1.RELEASE/reference/html/spring-boot-features.html#boot-features-loggingSpring Cloud Sleuth:https://github.com/spring-cloud/spring-cloud-sleuthOpentracing:https://github.com/opentracing 根据以上步骤操作,即可完成日志输出方式的切换。 相关问题: 1. 如何自定义Logback的日志格式? 2. 在Spring Boot中如何配置多环境的Logback配置? 3. 如何将日志同时输出到控制台和文件?</think>### 将 Spring Boot 日志阿里云 SLS 切换到 Logback 以下是完整的迁移步骤,请按顺序操作: #### 1. **移除阿里云 SLS 依赖** 在 `pom.xml` 中移除 SLS 相关依赖: ```xml <!-- 移除阿里云日志服务依赖 --> <dependency> <groupId>com.aliyun.openservices</groupId> <artifactId>aliyun-log-logback-appender</artifactId> <!-- 删除此依赖项 --> </dependency> ``` #### 2. **添加 Logback 配置** 在 `src/main/resources` 下创建 **logback-spring.xml** 文件: ```xml <?xml version="1.0" encoding="UTF-8"?> <configuration> <!-- 引入 Spring Boot 默认配置 --> <include resource="org/springframework/boot/logging/logback/defaults.xml" /> [^1] <!-- 控制台输出 --> <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern> </encoder> </appender> <!-- 文件输出 --> <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>logs/application.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <fileNamePattern>logs/application.%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern> <maxFileSize>100MB</maxFileSize> <maxHistory>30</maxHistory> </rollingPolicy> <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern> </encoder> </appender> <!-- 根日志配置 --> <root level="INFO"> <appender-ref ref="CONSOLE" /> <appender-ref ref="FILE" /> </root> </configuration> ``` #### 3. **删除 SLS 配置** 删除或注释掉 `application.properties/yml` 中的 SLS 配置: ```properties # 删除类似配置 # aliyun.log.endpoint=cn-beijing.log.aliyuncs.com # aliyun.log.project=your-project ``` #### 4. **验证日志输出** 添加测试代码: ```java @Slf4j @SpringBootApplication public class MyApp { public static void main(String[] args) { SpringApplication.run(MyApp.class, args); log.info(">>>> Logback 日志系统已激活 <<<<"); // 核心组件关键动作应记录 [^2] } } ``` 启动应用后检查: - 控制台输出日志 - 生成 `logs/application.log` 文件 #### 5. **日志记录最佳实践** - **关键动作记录**:系统启动参数、核心业务流程需记录 `INFO` 级别日志 [^2] - **异常处理**:捕获异常时记录完整堆栈 ```java try { // ... } catch (Exception e) { log.error("订单处理失败 - 订单ID: {}", orderId, e); // 包含业务上下文 } ``` - **第三方调用**:远程服务调用需记录请求/响应参数 [^2] > **注意**:在微服务架构中,避免按服务拆分日志存储(如不同 logstore),应保持统一格式便于全链路追踪 [^3]。 ### 相关问题 1. 如何配置 Logback 实现按日志级别分离输出文件? 2. 在 Spring Boot 中如何动态修改日志级别? 3. 微服务架构下如何实现跨服务的日志追踪? 4. Logback 的异步日志输出如何配置以提升性能? --- [^1]: 在 logback 的 xml 配置文件中,一行代码即可接入 Spring Boot 默认配置 [^2]: 系统核心角色、组件关键动作及第三方服务调用需重点记录日志 [^3]: 微服务架构中应避免按服务拆分日志存储,需保持统一格式
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值