美文网首页
logstash4j-用于日志的输入、转换处理、输出, java

logstash4j-用于日志的输入、转换处理、输出, java

作者: 老马啸西风2020 | 来源:发表于2024-01-15 11:33 被阅读0次

项目简介

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

特性

  • input

  • output

  • filter

  • metric

开源地址

logstash4j

快速开始

需要

jdk1.8+

maven 3.x+

maven 引入

<dependency>
    <groupId>com.github.houbb</groupId>
    <artifactId>logstash4j-core</artifactId>
    <version>0.9.0</version>
</dependency>

例子

启动程序

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();
    }

}

测试日志

11111111111
Stdout: {addField2=value2, addField1=value1, message=11111111111}
3333333333333333
Stdout: {addField2=value2, addField1=value1, message=3333333333333333}

yaml 例子

yaml 配置

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

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

相关文章

  • 计算机的组成

    计算机的五大组成部分 输入设备:用于接收输入 输出设备:用于处理输出 计算器:对输入数据进行处理,然后输出到输出设...

  • 二级Python---python语言的基本语法元素(Day1)

    一、基本输入输出函数 Python中有三个重要的基本输入、输出函数,用于输入、转换和输出,分别是input()...

  • Audio Unit详解

    一、什么是Audio Unit iOS提供了音频处理插件,支持混合、均衡、格式转换和实时输入/输出用于录制、播放、...

  • IO流

    # Java 流式输入 输出原理 # Java 流的分类 # 输入 输出 流 类 # 常见的节点流 和 处理流 #...

  • JAVA调用matlab程序 输入输出数据转换

    JAVA调用matlab程序 输入输出数据转换 JAVA 程序调用 matlab函数(matlab导出jar包里的...

  • IO系统

    内容梗概: Java流式输入/输出的原理 Java流类的分类 输入/输出流类 常见的节点流和处理流 文件流 缓冲流...

  • 100 Days of SwiftUI - Day 19 项目1

    构建一个处理单位转换的应用程序:用户将选择一个输入单位和一个输出单位,然后输入一个值,然后查看转换的输出。 你可以...

  • 20180222周四~图像处理

    图像处理,分低层处理,输入图像,输出图像。中层处理,输入图像,输出数据。如分割。高层处理,输入图像,输出语义。...

  • Java IO 流处理

    1 流式输入/输出原理 数据以字节或者字符的形式,通过流(节点流/处理流)进行输入输出。 java.io包(阻塞)...

  • java十七(字符字节流的转换)

    * InputStreamReader:字节输出转换为字符输出 * OutStreamWriter:字节输入转换为...

网友评论

      本文标题:logstash4j-用于日志的输入、转换处理、输出, java

      本文链接:https://www.haomeiwen.com/subject/zhhhodtx.html