项目简介

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

logstash4j-用于日志的输入、转换处理、输出, java 开发者自己的 logstash的更多相关文章

  1. springboot(二).springboot整合logback用于日志输出

    springboot整合logback用于日志输出 我们项目的基本框架已经完成,http请求已经可以访问,现在给我们的框架添加日志记录的功能并能将每天的记录记录到文件中去 在这里,我们使用logbac ...

  2. 实用的4~20mA输入/0~5V输出的I/V转换电路(转)

    源: 实用的4~20mA输入/0~5V输出的I/V转换电路

  3. C语言入门5-键盘的输入和屏幕输出

    C程序中的键盘输入和屏幕输出都是通过  调用输入/输出函数  实现的. 一.数据的格式化    屏幕输出 函数printf()的一般格式  (有两种) (1)第一种: printf(格式控制字符串): ...

  4. C语言程序设计(四) 键盘输入和屏幕输出

    第四章 键盘输入和屏幕输出 转义字符 \n 换行,光标移到下一行的起始位置 \r 回车(不换行),光标移到当前行的起始位置 \0 空字符 \t 水平制表 \v 垂直制表 \b 退格 \f 走纸换页 \ ...

  5. Python基础之注释,算数运算符,变量,输入和格式化输出

    Python的注释 注释的作用:用自己熟悉的语言,对某些代码进行标注说明,增强程序的可读性: 在python解释器解释代码的过程中,凡是#右边的,解释器都直接跳过这一行: 注释的分类 单行注释 # 这 ...

  6. kettle spoon中“表输入”到“表输出”的乱码问题

    数据库中的数据在不同的数据库中转换来装换去,由于不同库可能使用了不同的字符集,所以可能导致结果数据乱码问题.此次是在一个作业中跑数据,跑完数据前台数据显示出现乱码,检查了作业中的多有中间过程表,包括表 ...

  7. Mybatis输入映射和输出映射

    本节内容: 输入参数映射 输出映射 resultMap Mapper.xml映射文件中定义了操作数据库的sql,每个sql是一个statement,映射文件是mybatis的核心. 一.环境准备 复制 ...

  8. MyBatis入门(二)—— 输入映射和输出映射、动态sql、关联查询

    一.输入映射和输出映射 1. parameterType(输入类型) 1.1 传递简单类型 <select id="getUserById" parameterType=&q ...

  9. 深入比特币原理(三)——交易的输入(input)与输出(output)

    本节内容非常重要,如果你不能很好的掌握本节内容,你无法真正理解比特币的运行原理,请务必要学习清楚. 比特币的交易模型为UTXO(unspend transaction output),即只记录未花费的 ...

  10. 利用C语言识别用户输入字符并且输出该字符ASCII码值(大小写字母篇)(含思路)

    要求:从键盘输入一个字符,如果输入字符的是小写英文字母,则将其转换为大写英文字母,然后将转换后的英文字母及其ASCII码值输出到屏幕上,如果输入的是其他字符,则不转换并且直接将它及其ASCII码值输出 ...

随机推荐

  1. MySQL高可用搭建方案之(MHA)

    有的时候博客内容会有变动,首发博客是最新的,其他博客地址可能会未同步,认准https://blog.zysicyj.top 首发博客地址 原文地址 MHA架构介绍 MHA是Master High Av ...

  2. [转帖]Linux nice和renice命令:改变进程优先级

    https://c.biancheng.net/view/1074.html 当 Linux 内核尝试决定哪些运行中的进程可以访问 CPU 时,其中一个需要考虑的因素就是进程优先级的值(也称为 nic ...

  3. KVM命令行Clone虚拟机的快速处理

    KVM命令行Clone虚拟机的快速处理 背景 鲲鹏+银河麒麟的测试环境 想着可以使用 KVM的方式创建虚拟机 virt-manager 有个clone虚拟机的提示, 但是发现没有创建新存储卷下面的磁盘 ...

  4. [转帖]15分钟了解TiDB

    https://zhuanlan.zhihu.com/p/338947811 由于目前的项目把mysql换成了TiDb,所以特意来了解下tidb.其实也不能说换,由于tidb和mysql几乎完全兼容, ...

  5. [转帖]Jmeter接口测试:${__UUID()}函数

    UUID函数返回一个伪随机类型的通用唯一标识符ID. UUID 是 通用唯一识别码(Universally Unique Identifier)的缩写.UUID是基于当前时间戳.随机数和硬件标识(例如 ...

  6. 【转帖】ChatGPT的前身:InstructGPT

    https://www.jianshu.com/p/6daf35cbc46a ChatGPT的论文目前还没有发布,在其官方博客(https://openai.com/blog/chatgpt/)中对方 ...

  7. 【转帖】50.设置HotSpot采用解释器还是JIT编译器(-Xint、-Xcomp、Xmixed以及-Server、-Client)

    目录 1.设置HotSpot 1.设置HotSpot 1.设置采用解释器还是JIT编译器 -Xint: 完全采用解释器模式执行程序. -Xcomp: 完全采用即时编译器模式执行程序.如果即时编译出现问 ...

  8. JDK内嵌指令的简单学习

    java 可以使用 java -jar的方式启动服务 日常工作中用到的比较少 javac 可以将.java 文件编译成 .class中间代码 这个工具开发编写代码中是经常需要使用的, jenkins ...

  9. echarts显示地图

    <template> <div class="managingPatientSize"> <div id="china-map"& ...

  10. echarts给每个柱状图配置不同的颜色

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...