首页 > 编程语言 >logstash4j-用于日志的输入、转换处理、输出, java 开发者自己的 logstash

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

时间:2024-01-16 11:46:37浏览次数:30  
标签:logstash4j java list houbb new 日志 logstashConfigClassName logstash

项目简介

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

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

日志矩阵

日志采集-logcollect-go

日志处理-logstash4j

日志处理插件-logstash4j-plugins

日志整合框架-log-integration

切面日志-auto-log

日志脱敏-sensitive

日志的全链路

全链路 auto-trace

唯一的跟踪号-trace-id

包内链路信息

应用间链路

日志检索

分词-segment

拼音-pinyin

中文繁简体转换-opencc4j

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

日志的可视化 类似kibana:TODO

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

标签:logstash4j,java,list,houbb,new,日志,logstashConfigClassName,logstash
From: https://www.cnblogs.com/houbbBlogs/p/17967320

相关文章

  • Java 将所有的数据信息查询出来 ,进行映射
    查询出所有组织结构的数据,列表显示时进行映射 该代码查询的参数是逗号相隔的多个数据//查询对应组织机构List<Map<String,Object>>deptList=businessManagerMapper.querySysDept();Map<Object,List<Map<String,Object>>>groupMap=deptList.stream().co......
  • java连接postgresql
    提前请确保已经安装了postgresql相关的驱动包importjava.sql.*;publicclassPostgresConnectionExample{publicstaticvoidmain(String[]args)throwsSQLException{//定义数据库连接信息Stringurl="jdbc:postgresql://localhost:5432/myd......
  • Java 实现单例模式
    目录单例模式简介双重检查锁优缺点延迟加载模式(Initialization-on-demandholderidiom)优缺点饿汉模式优缺点枚举方式优缺点单例模式简介单例模式是一种创建型设计模式,让你能够保证一个类只有一个实例,并提供一个访问该实例的全局节点。单例模式保证了系统内存中该类只存在一......
  • JavaSE(12) - 常用API(下)
    JavaSE(12)-常用API(下)JDK7以前的时间相关类Date类如何创建日期对象Datedate=newDate();//空参构造创建的对象,默认表示系统当前时间Datedate=newDate(指定毫秒值);//有参构造创建的对象,表示指定时间如何修改时间对象中的毫秒值setTime(毫秒值);如......
  • java安装
    1.要使用Java,必须先安装什么?去哪里下载?目前学习jdk17JDK(JavaDevelopmentKit)开发者工具包;Oracle官网(Java软件|Oracle中国) 2.LTS版本有哪些?很多企业还在使用哪个JDK版本?JDK8、11、17、21    很多企业还在使用JDK8/JDK11。3.如何验证JDK是否安装成功了?打......
  • JavaSE(13) - 常见算法 algorithm
    JavaSE(13)-常见算法algorithm查找算法Search基本查找BasicSearchpackagealgorithm.search;/*BasicSearch1.用基本查找,查找某个元素在数组中的索引(不考虑重复元素)2.用基本查找,查找某个元素在数组中的索引(考虑重复元素)*/publicclassBasicSearch{public......
  • web DevOps / css id / css class / javascript / Browser Object Model / bom / Docu
    sNSD_DEVOPS_02CSS概述概念与理解层叠样式表—也就是CSS—是在HTML之后应该学习的第二门技术。HTML用于定义内容的结构和语义,CSS用于设计风格和布局。比如,我们可以使用CSS来更改内容的字体、颜色、大小、间距,将内容分为多列,或者添加动画及其他的装饰效果。修改页......
  • 基于javaPoet的缓存key优化实践
    一.背景在一次系统opsreview中,发现了一些服务配置了@Cacheable注解。@cacheable来源于springcache框架中,作用是使用aop的方式将数据库中的热数据缓存在redis/本地缓存中,代码如下:@Cacheable(value={"per"},key="#person.getId()"+"_"+"#person.getName()")publicPerso......
  • 如何使用Java在Excel中添加动态数组公式?
    本文由葡萄城技术团队发布。转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。前言动态数组公式是Excel引入的一项重要功能,它将Excel分为两种风格:Excel365和传统Excel(2019或更早版本)。动态数组功能允许用户从单个单元格中的公式......
  • Java控制流
    Java流程控制Scanner对象基本语法:Scannerscn=newScanner(System.in); //Scanner类来获取用户的输入​ 通过Scanner类的next()与nextLine()方法获取输入的字符串,在读取前我们一般需要使用hasNext()与hasNextLine()判断是否还有输入的数据。1、next()一定要读取到有效......