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

sls日志服务采集json格式日志

springboot统计的json数据

  • 1. 配置 Logback 输出 JSON 格式日志
    • 1.1添加依赖:
    • 1.2配置 Logback 输出日志:
  • 2. 使用 LinkedHashMap 日志数据
  • 3. 将日志推送到 SLS
  • 4. 在阿里云 SLS 中查看日志
  • 5.补充:关于 JSON 格式输出
  • 5.补充:关于 JSON 格式输出

要将 Spring Boot 后端的数据(如你提供的 LinkedHashMap<String, Object> map)采集到 SLS(Simple Log Service)日志 中,并将其以 JSON 格式 存储,配置适当的日志记录方式,并将这些日志数据按照特定格式输出。
一般情况下,我们使用 Logback 作为 Spring Boot 项目的日志框架

1. 配置 Logback 输出 JSON 格式日志

1.1添加依赖:

在 pom.xml 中添加 Logback 和 Logstash-Logback-Encoder 依赖:

<dependency>
    <groupId>net.logstash.logback</groupId>
    <artifactId>logstash-logback-encoder</artifactId>
    <version>7.0</version> <!-- 根据需要选择适当版本 -->
</dependency>

1.2配置 Logback 输出日志:

在 src/main/resources/logback-spring.xml(或者 logback.xml)中配置一个 RollingFileAppender 或者 SocketAppender 来将日志输出为 JSON 格式。

例如,使用 LogstashEncoder 输出 JSON 格式日志到文件:

<appender name="SLS_ACCESS" class="ch.qos.logback.core.rolling.RollingFileAppender">
		<filter class="ch.qos.logback.classic.filter.LevelFilter">
			<level>INFO</level>
			<onMatch>ACCEPT</onMatch>
			<onMismatch>DENY</onMismatch>
		</filter>
		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
			<FileNamePattern>./logs/access/%d{yyyy-MM-dd}/%i.log</FileNamePattern>
			<maxHistory>90</maxHistory>
			<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
				<maxFileSize>10MB</maxFileSize>
			</timeBasedFileNamingAndTriggeringPolicy>
		</rollingPolicy>
		<!-- 使用 LogstashEncoder 输出 JSON 格式日志 -->
		<encoder class="net.logstash.logback.encoder.LogstashEncoder">
			<charset>UTF-8</charset>
		</encoder>
	</appender>
	<!-- 为 AuthController 创建独立的 logger -->
	<logger name="com.xxx.xxx.controller.xxxr" level="INFO" additivity="false">
		<appender-ref ref="SLS_ACCESS"/>
	</logger>

2. 使用 LinkedHashMap 日志数据

实际需要统计的sls日志数据

private static final Logger logger = LoggerFactory.getLogger(AccessLogService.class);

    public void logAccessData(AccessLogEntity accessLogEntity) {
        LinkedHashMap<String, Object> map = new LinkedHashMap<>();
        map.put("appCode", accessLogEntity.getAppCode());
        map.put("userId", accessLogEntity.getUserId());
        map.put("userRole", accessLogEntity.getUserRole());
        map.put("areaCode", accessLogEntity.getAreaCode());
        map.put("actionType", accessLogEntity.getActionType());
        // 将日志数据转换成 JSON 格式并记录
        JSONObject jsonObject = new JSONObject(map);
        logger.info(jsonObject.toJSONString());
    }

3. 将日志推送到 SLS

需要将日志从应用程序发送到阿里云的 SLS 服务。假设你已经配置了 Logback或者Logtail 将日志输出到 SLS,你的日志就会以 JSON 格式发送。

4. 在阿里云 SLS 中查看日志

你可以登录阿里云控制台,进入日志服务(SLS)查看你发送的日志。每条日志记录应该是一个 JSON 格式的对象,类似于:

message: {
   "appCode": "yourAppCode",
   "userId": "12345",
   "userRole": "admin",
   "areaCode": "1001",
   "actionType": "login"
}

需要在查询分析属性—开启字段索引—选择json格式
在这里插入图片描述
在这里插入图片描述

5.补充:关于 JSON 格式输出

如果你想要更定制化的 JSON 格式输出,LogstashEncoder 默认会将日志输出为标准的 JSON 格式。如果你需要对某些字段进行特定格式化或自定义,可以扩展 LogstashEncoder,或者在 Logback 配置中使用自定义的 PatternLayoutEncoder。

5.补充:关于 JSON 格式输出

1.使用 Logback 配合 Logstash-Logback-Encoder 输出 JSON 格式日志。
2.将日志配置为通过 SLS 推送到阿里云日志服务。
3.使用 LinkedHashMap 记录日志内容,并通过 SLF4J 打印出来。

上一篇:springboot指定类日志记录特定文件


http://www.kler.cn/a/383348.html

相关文章:

  • 基于Spring Boot+Vue的助农销售平台(协同过滤算法、限流算法、支付宝沙盒支付、实时聊天、图形化分析)
  • 【Spring】——SpringBoot项目创建
  • 基础算法——排序算法(冒泡排序,选择排序,堆排序,插入排序,希尔排序,归并排序,快速排序,计数排序,桶排序,基数排序,Java排序)
  • 使用SQLark如何将Oracle迁移到达梦数据库
  • Unity3D学习FPS游戏(9)武器音效添加、创建敌人模型和血条
  • 如何学习Python编程?
  • HE-Drive:Human-Like End-to-End Driving with Vision Language Models
  • [蓝桥杯算法从小白到大牛]动态规划第二讲:三步问题
  • RK3568 Android12跳过认证 预置谷歌服务GMS
  • 【系统架构设计师】高分论文:论高并发下的高可用性技术
  • 未来已来:AI编程——重塑软件开发的新纪元
  • (十四)JavaWeb后端开发——MyBatis
  • 怎么查看navicat的数据库密码
  • 国家宠物美容师职业技能等级评价(高级)理论考试题
  • ac8257 android 9 lk upgrade升级后分区表错误问题
  • ​Java面试经典 150 题.P13. 罗马数字转整数(012)​
  • 为什么要学习 Java 编程
  • 人工智能技术:未来生活的“魔法师”
  • NewStar CTF 2024 misc WP
  • 基于SSD模型的路面坑洼检测系统,支持图像、视频和摄像实时检测【pytorch框架、python源码】
  • 502 Bad Gateway 错误详解:从表现推测原因,逐步排查直至解决
  • Vue 2 + JavaScript + vue-count-to 集成案例
  • Ubuntu系统如何实现键盘按键映射到其他按键(以 Ctrl+c 映射到 F3,Ctrl+v 映射到 F4 为例)
  • python传递json参数给php
  • Git 的分支管理
  • 北斗短报文数传终端介绍与应用