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