最近想将服务的运行日志收集起来,首先了解到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的更多相关文章

  1. 海量日志采集Flume(HA)

    海量日志采集Flume(HA) 1.介绍: Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集.聚合和传输的系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据 ...

  2. VisualSVN设置提交时必须输入日志信息

    VisualSVN设置提交时必须输入日志信息 1.svn提交时强制输入提交信息 为了阻止SVN提交空日志信息和垃圾文件可以在SVN服务器端强制必须填写日志信息,这时需用到pre-commit钩子脚本. ...

  3. log4j2设置日志文件读写权限(filePermissions)

    spring-boot使用log4j2作为日志插件的时候需要设置日志文件的读写权限,可以File 上增加filePermissions,如: <File name="File" ...

  4. 消费滚动滴log日志文件(flume监听,kafka消费,zookeeper协同)

    第一步:数据源 手写程序实现自动生成如下格式的日志文件: 15837312345,13737312345,2017-01-09 08:09:10,0360 打包放到服务器,使用如下命令执行,模拟持续不 ...

  5. log4j2 扩展日志级别,支持将系统日志与业务处理日志拆分

    项目中,有时候需要对系统中已处理的一些业务数据日志进行提取分析,通常log4j默认提供的日志级别可能不够用,这时候我们就需要对日志级别进行扩展,以满足我们的需求. 本文就简单介绍一下log4j2的日志 ...

  6. log4j输出日志到flume

    现需要通过log4j将日志输出到flume,通过flume将日志写到文件或hdfs中 配置flume-config文件 将日志下沉至文件 a1.sources = r1 a1.sinks = k1 a ...

  7. log4j2异步日志解读(二)AsyncLogger

    前文已经讲了log4j2的AsyncAppender的实现[log4j2异步日志解读(一)AsyncAppender],今天我们看看AsyncLogger的实现. 看了这个图,应该很清楚AsyncLo ...

  8. SpringBoot整合log4j2进行日志配置及防坑指南

    写在前面 最近项目经理要求将原先项目中的日志配置logBack,修改为log4j2,据说是log4j2性能更优于logback,具体快多少,网上有说快10多倍,看来还是很快的,于是新的一波挑战又开始了 ...

  9. 普通Java项目中使用Sl4j+Log4j2打印日志

        因工作需要,采用JavaFx开发了一个windows窗口程序.在开发过程中,由于没有引入日志框架,只能自己手动在控制台打印些信息,给调试带来了很多麻烦:因此决定引入日志框架.由于之前接触的项目 ...

随机推荐

  1. iOS 性能监测

    给些链接: http://mp.weixin.qq.com/s?__biz=MzAwNDY1ODY2OQ%3D%3D&idx=1&mid=207890859&scene=23& ...

  2. javaee加密部署,tomcat使用自己的classloader解密

    http://www.2cto.com/kf/201312/264455.html [起因] 公司需要对一个web项目进行加密之后出售, 大家都知道的,class很好反编译, 所以需要对class文件 ...

  3. jqgrid动态填充select

    前两天使用jquery动态填充jqgrid的select,默认随便用一个dict填充(初始化页面是会替换掉),用着可以,后来发现当行数增多,回到以前行继续编辑发现select又变成了那个用来避免报错随 ...

  4. mysql-community-server安装完后不知道root密码

    修改方法: service mysqld stop mysqld_safe --skip-grant-tables & mysql -u root use mysql; update user ...

  5. 20145321 《Java程序设计》第10周学习总结

    20145321 <Java程序设计>第10周学习总结 教材学习内容总结  网络编程:网络编程的实质就是两个(或多个)设备(例如计算机)之间的数据传输. IP地址:为了能够方便的识别网络上 ...

  6. Qt大小端

    转:http://blog.csdn.net/usownh/article/details/42614185 大端模式和小端模式是计算机中经常涉及到的两种字节序,也有大端对齐.小端对齐.大尾.小尾等叫 ...

  7. 动态 K th

    每一棵线段树是维护每一个序列前缀的值在任意区间的个数,如果还是按照静态的来做的话,那么每一次修改都要遍历O(n)棵树,时间就是O(2*M*nlogn)->TLE考虑到前缀和,我们通过树状数组来优 ...

  8. 【bzoj5177】[Jsoi2013]贪心的导游(分块)

    题目传送门:https://www.lydsy.com/JudgeOnline/problem.php?id=5177 在网上看到的题解基本都是用主席树,也就是带点骚操作的暴力直接艹过去的.这里分享一 ...

  9. shiro对事务的影响

    记一个 No transaction aspect-managed TransactionStatus in scope 错误的解决方法 昨天出现一个BUG,事务没有加回滚成功,修改管理员密码事务没有 ...

  10. POJ - 3169 差分约束

    题意:n头牛,按照编号从左到右排列,两头牛可能在一起,接着有一些关系表示第a头牛与第b头牛相隔最多与最少的距离,最后求出第一头牛与最后一头牛的最大距离是多少,如         果最大距离无限大则输出 ...