logstash4j-用于日志的输入、转换处理、输出, java 开发者自己的 logstash

项目简介

logstash4j 用于日志的输入、转换处理、输出, java 开发者自己的 logstash

特性

  • input

  • output

  • filter

  • metric

开源地址

logstash4j

快速开始

需要

jdk1.8+

maven 3.x+

maven 引入

xml 复制代码
<dependency>
    <groupId>com.github.houbb</groupId>
    <artifactId>logstash4j-core</artifactId>
    <version>0.9.0</version>
</dependency>

例子

启动程序

java 复制代码
import com.github.houbb.logstash4j.core.api.ILogstashConfigClassName;
import com.github.houbb.logstash4j.core.api.ILogstashManageConfig;
import com.github.houbb.logstash4j.core.bs.LogstashManageCoreBs;
import com.github.houbb.logstash4j.core.support.config.LogstashConfigClassName;

import java.util.*;

public class LogstashManageCoreBsTest {

    public static void main(String[] args) {
        ILogstashManageConfig config = new ILogstashManageConfig() {
            @Override
            public List<ILogstashConfigClassName> getInputConfigList() {
                List<ILogstashConfigClassName> list = new ArrayList<>();
                LogstashConfigClassName logstashConfigClassName = new LogstashConfigClassName(new HashMap<String, Object>());
                logstashConfigClassName.setClassName("com.github.houbb.logstash4j.plugins.input.StdIn");
                list.add(logstashConfigClassName);
                return list;
            }

            @Override
            public List<ILogstashConfigClassName> getFilterConfigList() {
                //1. add
                List<ILogstashConfigClassName> list = new ArrayList<>();
                Map<String, Object> configMap = new HashMap<>();
                configMap.put("addField1", "value1");
                configMap.put("addField2", "value2");

                LogstashConfigClassName logstashConfigClassName = new LogstashConfigClassName(configMap);
                logstashConfigClassName.setClassName("com.github.houbb.logstash4j.plugins.filter.Add");
                list.add(logstashConfigClassName);
                return list;
            }

            @Override
            public List<ILogstashConfigClassName> getOutConfigList() {
                List<ILogstashConfigClassName> list = new ArrayList<>();
                LogstashConfigClassName logstashConfigClassName = new LogstashConfigClassName(new HashMap<String, Object>());
                logstashConfigClassName.setClassName("com.github.houbb.logstash4j.plugins.output.StdOut");
                list.add(logstashConfigClassName);
                return list;
            }
        };

        //run
        LogstashManageCoreBs.newInstance()
                .manageConfig(config)
                .init()
                .run();
    }

}

测试日志

ini 复制代码
11111111111
Stdout: {addField2=value2, addField1=value1, message=11111111111}
3333333333333333
Stdout: {addField2=value2, addField1=value1, message=3333333333333333}

yaml 例子

yaml 配置

  • gen_test.yaml
yaml 复制代码
---
outputs:
  - StdOut: {}
inputs:
  - StdIn: {}
filters:
  - Add:
      addField2: "value2"
      addField1: "value1"

java 代码

java 复制代码
ILogstashManageConfig config = new YamlLogstashManageConfig("gen_test.yaml");

 LogstashManageCoreBs.newInstance()
         .manageConfig(config)
         .init()
         .run();

效果和上面类似,只是换了一种配置方式。

ROAD-MAP

满足下面的话,可以让组件更加的强大。

  • 如何可以让不同的 event 进行关联?
  • 如何让 input/filter/ouput 之间也可以关联?

日志矩阵

日志采集-logcollect-go

日志处理-logstash4j

日志处理插件-logstash4j-plugins

日志整合框架-log-integration

切面日志-auto-log

日志脱敏-sensitive

日志的全链路

全链路 auto-trace

唯一的跟踪号-trace-id

包内链路信息

应用间链路

日志检索

分词-segment

拼音-pinyin

中文繁简体转换-opencc4j

日志存储+检索 类似ES:TODO

日志的可视化 类似kibana:TODO

日志分析-错误+慢日志+报警平台:TODO

相关推荐
用户3228360084471 小时前
python-rapidjson:用 C++ 速度处理 JSON 的 Python 库
github
逛逛GitHub1 小时前
4 个比较实用的 GitHub 开源项目,浅浅的收藏一波。
github
Hommy881 小时前
【剪映小助手】添加贴纸接口(Add Sticker)
后端·github·剪映小助手·视频剪辑自动化·剪映api
下班走回家3 小时前
DeepSeek 开源模型的突破与思考:从技术到生态的全面进化
人工智能·开源
ApacheSeaTunnel3 小时前
实战演示 | 基于 Apache SeaTunnel 与 Apache DolphinScheduler 实现 MySQL 到 Doris 离线定时增量同步
大数据·mysql·开源·doris·数据集成·seatunnel·数据同步
国产化创客4 小时前
ESP32 CameraWebServer 原生摄像头项目全解析
物联网·开源·嵌入式·实时音视频·智能硬件
2601_961845155 小时前
粉笔行测5000题电子版|pdf|解析
pdf·新媒体运营·github·个人开发·内容运营·规格说明书·极限编程
ofoxcoding6 小时前
GLM 5.2 使用教程:API 接入配置、价格说明及 MIT 开源权重发布计划
ai·开源
X54先生(人文科技)7 小时前
《元创力》纪实录·卷宗2.2 会议室的裂缝:当“真实高于完美”第一次被写在会议纪要里
人工智能·开源·ai写作·零知识证明
用户773530084517 小时前
gorillamux:Go语言路由库的实用选择
github