log4j2 输入日志到flume
最近想将服务的运行日志收集起来,首先了解到flume技术栈
采用flume方案定了之后有两种方式实现
1: 在应用中,log4j2直接发送日志信息到flume ,
2: 通过监控log4j2 产生的日志文件,将日志文件新产生的日志发送到flume
下面两种方式都会介绍,首先透漏下我们选择的解决方案,我们选择了第二种监控新产生的日志文件
为什么这么选择:
第一种方式需要修改服务中log4j2的配置,添加flume Appender , 在应用中,当日志输出时,就会输出到flume,很显然,这种方式耦合了应用,并且对应用的性能有影响,到底有多大影响,这个还没有测试,其次,这种方式应用中依赖了flume的依赖,假如将来部署服务的时候不想收集日志了,会不会对项目的启动有影响,这一点也还没有验证,后续可能会验证
第二种方式完全是监控日志文件,当产生新的日志文件或者日志文件中生成新的日志时,就会触发日志收集。完全脱离应用存在。
我们介绍第二种方式的探索过程:
需求:当日志目录下产生新的文件或动态产生日志时,收集日志,发送到flume
接下来了解flume能不能解决我们的需求:
flume 入门相关概念:
source:
channel:
sink ;
source 中有很多分类,我们着重分析了几个的使用场景和特点
execSource :
spooldirSource :
taildirSource:
syslogSource ;
httpSource ;
经过分析每种Source的特点,很容易发现tailSource最接近我们的需求:
但是也有几个问题:
1:log4j2产生日志的逻辑是当日志文件内容达到设置的size上限就会重命名该日志文件(例如:sysware-2018-12-20-1.log),然后新建一个sysware.log文件,供日志输出,重命名日志之后,和原来的sysware.log日志文件全路径不一致,taildirSource会当做一个新的日志文件,再次重复读取,造成重复读取的问题
2:dirSource监控的dir 可以指定文件名称或者通过正则,但是如果已经有子文件夹的日志读取不到
上面的问题只能通过源码方式解决了
XXXXXX
所有的准备工作都做好了,我们现在开始做一个demo
XXXX
log4j2 输入日志到flume的更多相关文章
- 海量日志采集Flume(HA)
海量日志采集Flume(HA) 1.介绍: Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集.聚合和传输的系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据 ...
- VisualSVN设置提交时必须输入日志信息
VisualSVN设置提交时必须输入日志信息 1.svn提交时强制输入提交信息 为了阻止SVN提交空日志信息和垃圾文件可以在SVN服务器端强制必须填写日志信息,这时需用到pre-commit钩子脚本. ...
- log4j2设置日志文件读写权限(filePermissions)
spring-boot使用log4j2作为日志插件的时候需要设置日志文件的读写权限,可以File 上增加filePermissions,如: <File name="File" ...
- 消费滚动滴log日志文件(flume监听,kafka消费,zookeeper协同)
第一步:数据源 手写程序实现自动生成如下格式的日志文件: 15837312345,13737312345,2017-01-09 08:09:10,0360 打包放到服务器,使用如下命令执行,模拟持续不 ...
- log4j2 扩展日志级别,支持将系统日志与业务处理日志拆分
项目中,有时候需要对系统中已处理的一些业务数据日志进行提取分析,通常log4j默认提供的日志级别可能不够用,这时候我们就需要对日志级别进行扩展,以满足我们的需求. 本文就简单介绍一下log4j2的日志 ...
- log4j输出日志到flume
现需要通过log4j将日志输出到flume,通过flume将日志写到文件或hdfs中 配置flume-config文件 将日志下沉至文件 a1.sources = r1 a1.sinks = k1 a ...
- log4j2异步日志解读(二)AsyncLogger
前文已经讲了log4j2的AsyncAppender的实现[log4j2异步日志解读(一)AsyncAppender],今天我们看看AsyncLogger的实现. 看了这个图,应该很清楚AsyncLo ...
- SpringBoot整合log4j2进行日志配置及防坑指南
写在前面 最近项目经理要求将原先项目中的日志配置logBack,修改为log4j2,据说是log4j2性能更优于logback,具体快多少,网上有说快10多倍,看来还是很快的,于是新的一波挑战又开始了 ...
- 普通Java项目中使用Sl4j+Log4j2打印日志
因工作需要,采用JavaFx开发了一个windows窗口程序.在开发过程中,由于没有引入日志框架,只能自己手动在控制台打印些信息,给调试带来了很多麻烦:因此决定引入日志框架.由于之前接触的项目 ...
随机推荐
- 播放48KHZ有1S的停顿
两个音频文件: /usr/lib/gstreamer-0.10/libgstflump3dec.so /usr/lib/gstreamer-0.10/libgstflumpegdemux.so
- 一幅图秒懂LoadAverage(转载)
转自:http://www.habadog.com/2015/02/27/what-is-load-average/ 一幅图秒懂LoadAverage(负载) 一.什么是Load Average? ...
- Promise原理剖析
传统的异步回调编程最大的缺陷是:回调地狱,由于业务逻辑非常复杂,代码串行请求好几层:并行请求以前也要通过引用step.async库实现.现在ES6推出了Promise,通过Promise的链式调用可以 ...
- 20145324 Java实验一
北京电子科技学院(BESTI) 实 验 报 告 课程:JAVA 班级:1453 姓名:王嘉澜 学号:20145324 成绩: 指导教师:娄嘉鹏 实验日期:2016.4.8 实验密级: 预习程度: 实验 ...
- flex 的总结
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 贝叶斯公式由浅入深大讲解—AI基础算法入门【转】
本文转载自:https://www.cnblogs.com/zhoulujun/p/8893393.html 1 贝叶斯方法 长久以来,人们对一件事情发生或不发生的概率,只有固定的0和1,即要么发生, ...
- 分布式系列 - dubbo服务发布
单元测试OK,封装为Dubbo服务. 添加依赖 pom.xml <properties> <dubbo.version>2.5.3</dubbo.ve ...
- TCP/IP的相关协议
- POJ-2418 Hardwood Species(二叉搜索树)
思路就是先将每个单词存进二叉树中,没出现一次,修改该单词所在结点的cnt++: 最后通过递归中序遍历输出结果. 思路很清晰,主要注意一下指针的使用,想一想为什么要这么用? 简单的解释就是,insert ...
- BZOJ3236: [AHOI2013]作业
BZOJ3236: [AHOI2013]作业 题目描述 传送门 行,我知道是Please contact lydsy2012@163.com! 传送门2 题目分析 这题两问还是非常,emmmm. 首先 ...