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指定类日志记录特定文件