偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

扔掉笨重的 Logstash!基于 Spring Boot 日志采集方案正式發(fā)布!

開發(fā) 前端
在日常的 Spring Boot 應(yīng)用中,日志是定位問題、分析行為和運維監(jiān)控的重要數(shù)據(jù)源。傳統(tǒng)日志管理方式中,ELK(Elasticsearch + Logstash + Kibana)、EFK(Fluentd 代替 Logstash)是主流方案。然而,這些方案在配置復(fù)雜度、運維成本、資源消耗等方面對開發(fā)者并不友好。

背景導(dǎo)入:拋開“重裝備”,選擇輕量而優(yōu)雅的日志采集方案

在日常的 Spring Boot 應(yīng)用中,日志是定位問題、分析行為和運維監(jiān)控的重要數(shù)據(jù)源。傳統(tǒng)日志管理方式中,ELK(Elasticsearch + Logstash + Kibana)、EFK(Fluentd 代替 Logstash)是主流方案。然而,這些方案在配置復(fù)雜度、運維成本、資源消耗等方面對開發(fā)者并不友好。

特別是 Logstash/Filebeat 這類采集組件,雖然功能強大,但:

  • 配置繁雜,規(guī)則維護成本高;
  • 對新手不夠友好,學習門檻高;
  • 系統(tǒng)路徑或結(jié)構(gòu)變動時,易導(dǎo)致采集失效;
  • 必須單獨部署采集服務(wù),增加資源消耗。

我們是否可以不用改動業(yè)務(wù)代碼,僅通過一個輕量插件,就能實現(xiàn)日志自動采集并發(fā)送?zero-log 便是為此而生。

為什么選擇 zero-log?

zero-log 是一個為 Spring Boot 應(yīng)用量身打造的日志采集組件,主打“零侵入、低配置、輕部署”。它基于 Spring Boot 默認的日志框架 logback 進行拓展,在不改動任何業(yè)務(wù)日志邏輯的前提下,實現(xiàn)日志的批量異步發(fā)送。

優(yōu)勢一覽:

特性

傳統(tǒng) Logstash

zero-log 插件

規(guī)則配置

需手寫解析規(guī)則

無需解析配置

侵入性

需單獨部署服務(wù)

業(yè)務(wù)代碼零改動

資源占用

極低

實現(xiàn)難度

2 分鐘集成

數(shù)據(jù)傳輸方式

監(jiān)聽文件系統(tǒng)

直接 HTTP 發(fā)送

發(fā)送模式

單條或按行

批量異步發(fā)送

適配性

依賴系統(tǒng)路徑

與路徑無關(guān),統(tǒng)一接收地址

完整示例項目結(jié)構(gòu)

/opt/projects/com/icoderoad/logcollector
├── pom.xml
├── src
│   ├── main
│   │   ├── java
│   │   │   └── com
│   │   │       └── icoderoad
│   │   │           └── logcollector
│   │   │               ├── LogCollectorApplication.java
│   │   │               └── controller
│   │   │                   └── DemoController.java
│   │   └── resources
│   │       ├── application.yml
│   │       └── logback-spring.xml
└── README.md

依賴配置(pom.xml)

<dependency>
    <groupId>io.github.kuafucv</groupId>
    <artifactId>zero-log</artifactId>
    <version>0.0.5</version>
</dependency>

配置文件詳解

application.yml 示例

路徑:src/main/resources/application.yml

spring:
  application:
    name: log-collector
  profiles:
    active: dev


logging:
  config: classpath:logback-spring.xml


custom:
  log:
    endpoint-url: http://localhost:8081/log/receive

路徑:src/main/resources/logback-spring.xml

<configuration debug="false">
    <springProperty name="app_name" source="spring.application.name"/>
    <springProperty name="env" source="spring.profiles.active"/>


    <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter"/>
    <conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter"/>
    <conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter"/>


    <property name="FILE_LOG_PATTERN"
              value="${FILE_LOG_PATTERN:-[%X{TRACE_ID}] %d{yyyy-MM-dd HH:mm:ss.SSS} %5p --- [%t] %-40.40logger{39} : %m%n%wEx}"/>
    <property name="FILE_LOG_CHARSET" value="UTF-8"/>


    <appender name="BATCH_HTTP" class="io.github.kuafucv.zero.log.HttpBatchAppender">
        <encoder>
            <pattern>${FILE_LOG_PATTERN}</pattern>
            <charset>${FILE_LOG_CHARSET}</charset>
        </encoder>
        <endpointUrl>${custom.log.endpoint-url}</endpointUrl>
        <includeMDC>true</includeMDC>
        <appName>${app_name}</appName>
        <env>${env}</env>
        <flushIntervalInSeconds>3</flushIntervalInSeconds>
        <httpReadTimeoutInMillis>1000</httpReadTimeoutInMillis>
        <httpConnectionTimeoutInMillis>1000</httpConnectionTimeoutInMillis>
        <maxNumberOfBuckets>8</maxNumberOfBuckets>
        <maxBucketSizeInKilobytes>1024</maxBucketSizeInKilobytes>
    </appender>


    <root level="INFO">
        <appender-ref ref="BATCH_HTTP"/>
    </root>
</configuration>

日志數(shù)據(jù)格式說明

日志發(fā)送的 JSON 結(jié)構(gòu)如下所示,便于遠程平臺進行解析、持久化與展示:

{
  "patternLog": "2025-07-07 10:00:00.123 INFO --- [main] com.icoderoad.DemoController : 請求成功",
  "timestamp": 1720349823000,
  "level": "INFO",
  "pid": "1034",
  "thread": "main",
  "logger": "com.icoderoad.DemoController",
  "message": "請求成功",
  "mdc": {},
  "exception": {
    "className": "",
    "message": "",
    "stackTrace": []
  }
}

日志接收接口說明(endpointUrl)

該接口需支持:

  • HTTP POST 請求
  • Content-Type: application/json
  • 接收上述格式的數(shù)據(jù)

你可以對接自研的日志中心服務(wù),也可使用官方推薦的平臺:

開源地址:

https://gitee.com/kuafucv/zero-log

https://gitee.com/kuafucv/zero-observer

推薦搭配部署路徑示意

/usr/local/services/
├── log-collector/                 # Spring Boot 服務(wù)應(yīng)用,集成 zero-log 插件
└── zero-observer/                # 日志接收與展示平臺

可通過 nginx 做一層統(tǒng)一轉(zhuǎn)發(fā),實現(xiàn)日志統(tǒng)一匯總展示。

總結(jié):真正實現(xiàn)日志采集“開箱即用”

通過引入 zero-log,Spring Boot 應(yīng)用日志采集不再需要搭建復(fù)雜的中間件或編寫繁瑣的配置規(guī)則。它在不侵入業(yè)務(wù)邏輯、不增加部署負擔的前提下,實現(xiàn)了:

  • 日志異步采集 + 批量傳輸
  • 零代碼改動 + 快速對接平臺
  • 高性能 + 高可用

如果你也厭倦了復(fù)雜的 Logstash 配置,不妨試試 zero-log。在兩分鐘內(nèi),就能搭建出你自己的日志采集系統(tǒng)。

責任編輯:武曉燕 來源: 路條編程
相關(guān)推薦

2018-05-30 14:56:24

Spring輕量化Java 8

2018-06-20 15:42:09

2021-12-13 08:15:01

SpringSpring Boot開發(fā)

2021-04-27 09:45:33

Nginx日志運維

2024-04-03 15:40:14

WebSocketWeb應(yīng)用Spring

2022-11-26 00:00:03

Spring指南體系

2019-04-25 08:28:58

工具LogstashFilebeat

2019-05-17 15:26:06

Spring BootSpring BootJava

2022-12-12 08:34:57

SpringJava

2022-02-21 14:32:32

SpringBoot框架微服務(wù)

2020-06-11 16:35:02

filebeatlogstash前端

2012-02-16 13:43:39

JavaZK

2013-05-22 10:37:37

OperaWebkit瀏覽器

2025-10-14 07:59:41

2025-06-17 07:37:53

2023-09-13 08:56:51

2021-03-01 23:26:41

日志Spring BootAOP

2022-05-12 11:38:26

Java日志Slf4j

2025-06-30 04:00:00

2019-04-15 08:32:25

Spring Boot日志門面模式
點贊
收藏

51CTO技術(shù)棧公眾號