原文链接:使用Log4j将程序日志实时写入Kafka

很多应用程序使用Log4j记录日志,如何使用Kafka实时的收集与存储这些Log4j产生的日志呢?一种方案是使用其他组件(比如Flume,或者自己开发程序)实时监控这些日志文件,然后发送至Kafka。而另外一种比较便捷的方案是使用Kafka自带的Log4jAppender,在Log4j配置文件中进行相应的配置,即可完成将Log4j产生的日志实时发送至Kafka中。

本文以Kafka0.8.2为例,介绍KafkaLog4jAppender的配置方法:

log4j.properties文件内容如下:

  1. log4j.rootLogger=INFO,console,KAFKA
  2. ## appender KAFKA
  3. log4j.appender.KAFKA=kafka.producer.KafkaLog4jAppender
  4. log4j.appender.KAFKA.topic=lxw1234
  5. log4j.appender.KAFKA.brokerList=brokerNode1:9091,brokerNode2:9092
  6. log4j.appender.KAFKA.compressionType=none
  7. log4j.appender.KAFKA.syncSend=true
  8. log4j.appender.KAFKA.layout=org.apache.log4j.PatternLayout
  9. log4j.appender.KAFKA.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L %% - %m%n
  10. ## appender console
  11. log4j.appender.console=org.apache.log4j.ConsoleAppender
  12. log4j.appender.console.target=System.err
  13. log4j.appender.console.layout=org.apache.log4j.PatternLayout
  14. log4j.appender.console.layout.ConversionPattern=%d (%t) [%p - %l] %m%n

注意:KAFKA appender的配置参数,和Kafka版本有关,具体参数可参考kafka.producer. KafkaLog4jAppender中的定义。

一个使用了Log4j记录日志的Java Application Demo:

  1. package com.lxw1234.kafka;
  2. import org.apache.log4j.Logger;
  3. public class TestLog4j2Kafka {
  4. private static Logger logger = Logger.getLogger(TestLog4j2Kafka.class);
  5. public static void main(String[] args) throws InterruptedException {
  6. for(int i = 0;i <= 10; i++) {
  7. logger.info("This is Message [" + i + "] from log4j producer .. ");
  8. Thread.sleep(1000);
  9. }
  10. }
  11. }

先启动Kafka自带的consumer模拟脚本,消费Topic lxw1234的消息:

  1. cd $KAFKA_HOME/bin
  2. ./kafka-console-consumer.sh --zookeeper localhost:2181 --topic lxw1234 --from-beginning

再运行上面的Java Demo程序,控制台打印的内容:

在Consumer控制台打印消费的消息:

如图所示,KafkaLog4jAppender已经将消息正常发送至Kafka。

使用Log4j将程序日志实时写入Kafka(转)的更多相关文章

  1. 使用Log4j将程序日志实时写入Kafka

    第一部分 搭建Kafka环境 安装Kafka 下载:http://kafka.apache.org/downloads.html tar zxf kafka-<VERSION>.tgz c ...

  2. (一个)kafka-jstorm集群实时日志分析 它 ---------kafka实时日志处理

    package com.doctor.logbackextend; import java.util.HashMap; import java.util.List; import java.util. ...

  3. java实时监听日志写入kafka(转)

    原文链接:http://www.sjsjw.com/kf_cloud/article/020376ABA013802.asp 目的 实时监听某目录下的日志文件,如有新文件切换到新文件,并同步写入kaf ...

  4. java实时监听日志写入kafka(多目录)

    目的 实时监听多个目录下的日志文件,如有新文件切换到新文件,并同步写入kafka,同时记录日志文件的行位置,以应对进程异常退出,能从上次的文件位置开始读取(考虑到效率,这里是每100条记一次,可调整) ...

  5. java实时监听日志写入kafka

    目的 实时监听某目录下的日志文件,如有新文件切换到新文件,并同步写入kafka,同时记录日志文件的行位置,以应对进程异常退出,能从上次的文件位置开始读取(考虑到效率,这里是每100条记一次,可调整) ...

  6. 大数据学习day32-----spark12-----1. sparkstreaming(1.1简介,1.2 sparkstreaming入门程序(统计单词个数,updateStageByKey的用法,1.3 SparkStreaming整合Kafka,1.4 SparkStreaming获取KafkaRDD的偏移量,并将偏移量写入kafka中)

    1. Spark Streaming 1.1 简介(来源:spark官网介绍) Spark Streaming是Spark Core API的扩展,其是支持可伸缩.高吞吐量.容错的实时数据流处理.Sp ...

  7. flume学习(三):flume将log4j日志数据写入到hdfs(转)

    原文链接:flume学习(三):flume将log4j日志数据写入到hdfs 在第一篇文章中我们是将log4j的日志输出到了agent的日志文件当中.配置文件如下: tier1.sources=sou ...

  8. 【Python】Python日志无延迟实时写入

    我在用python生成日志时,发现无论怎么flush(),文件内容总是不能实时写入,导致程序意外中断时一无所获. 以下是查到的解决方案(亲测可行): open 函数中有一个bufferin的参数,默认 ...

  9. weblogic开启http访问日志并实时写入日志文件

    由于http访问会产生大量日志,耗去不少IO和CPU所以在生产一般是不启用的:但有时我们会想启用http访问日志,尤其是在系统上线调试的时候. weblogic的日志默认在domain_name/se ...

随机推荐

  1. 2013-2014 ACM-ICPC Brazil Subregional Programming Contest 题解

    [题目链接] 这场比赛题面英文都好长... ... A - Zero or One 模拟. #include <bits/stdc++.h> using namespace std; in ...

  2. 那些年我们踩过的坑之表单reset

    开发者往往是在一个又一个的坑中成长起来的,自学的开发者尤其如此,刚刚填完一个坑,转身又掉进另一个坑.有些坑很容易就跳出来了,也有些坑能整了一天都没头绪,第二天早上一来发现后面就有一架通往坑外的梯子,坑 ...

  3. Xamarin iOS教程之添加和定制视图

    Xamarin iOS教程之添加和定制视图 Xamarin iOS用户界面——视图 在iPhone或者iPad中,用户看到的摸到的都是视图.视图是用户界面的重要组成元素.例如,想要让用户实现文本输入时 ...

  4. Codeforces Round #375 (Div. 2) E. One-Way Reform 欧拉路径

    E. One-Way Reform 题目连接: http://codeforces.com/contest/723/problem/E Description There are n cities a ...

  5. 对 Git 分支 master 和 origin/master 的一些认识

    首先要明确一点,对 Git 的操作是围绕 3 个大的步骤来展开的(其实几乎所有的 SCM 都是这样) 从 git 取数据(git clone) 改动代码 将改动传回 git(git push) 这 3 ...

  6. linux下授予某用户对某文件夹的读写权限

  7. 这里包含几乎所有的xcode正式版本

    https://developer.apple.com/downloads/

  8. firedac调用ORACLE的存储过程

    firedac调用ORACLE的存储过程 EMB官方原文地址:http://docwiki.embarcadero.com/RADStudio/Tokyo/en/Using_Oracle_with_F ...

  9. activity_main.xml 要用 Android Common XML Editor打开,双击的方式直接跳转到浏览器了

  10. 在arcgis使用python脚本进行字段计算时是如何解决中文问题的

    来自:https://www.jb51.net/article/73561.htm 一.引言 在arcgis打开一个图层的属性表,可以对属性表的某个字段进行计算,但是在平常一般都是使用arcgis提供 ...