log4j直接输出日志到flume

log4j.properties配置:

log4j.rootLogger=INFO
log4j.category.com.besttone=INFO,flume
log4j.appender.flume = org.apache.flume.clients.log4jappender.Log4jAppender
log4j.appender.flume.Hostname = localhost
log4j.appender.flume.Port = 44444

log4j.appender.flume.UnsafeMode = true

需要将/opt/cloudera/parcels/CDH-5.0.0-1.cdh5.0.0.p0.47/lib/flume-ng/tools/flume-ng-log4jappender-1.4.0-cdh5.0.0-jar-with-dependencies.jar添加到classpath下。

然后可以写一个简单的测试类来测试一下:

[java] view plaincopy

  1. package com.besttone.flume;
  2. import java.util.Date;
  3. import org.apache.commons.logging.Log;
  4. import org.apache.commons.logging.LogFactory;
  5. public class WriteLog {
  6. protected static final Log logger = LogFactory.getLog(WriteLog.class);
  7. /**
  8. * @param args
  9. * @throws InterruptedException
  10. */
  11. public static void main(String[] args) throws InterruptedException {
  12. // TODO Auto-generated method stub
  13. while (true) {
  14. //每隔两秒log输出一下当前系统时间戳
  15. logger.info(new Date().getTime());
  16. Thread.sleep(2000);
  17. }
  18. }
  19. }

然后写一个run.sh脚本运行这个类:

[plain] view plaincopy

  1. #!/bin/bash
  2. jarlist=`ls ./lib/*.jar`
  3. CLASSPATH=‘./bin/‘
  4. for jar in ${jarlist}
  5. do
  6. CLASSPATH=${CLASSPATH}:${jar}
  7. done
  8. echo ${CLASSPATH}
  9. java -classpath "$CLASSPATH" com.besttone.flume.WriteLog &

执行run.sh,将sink设置为logger,去flume的日志文件里去看,可以看到log4j的日志输出已经传输到了flume中:

2014-07-16 14:23:54,193 INFO org.apache.flume.sink.LoggerSink: Event: { headers:{flume.client.log4j.log.level=20000, flume.client.log4j.message.encoding=UTF8, flume.client.log4j.logger.name=com.besttone.flume.WriteLog, flume.client.log4j.timestamp=1405491834189} body: 31 34 30 35 34 39 31 38 33 34 31 38 39          1405491834189 }

时间: 2024-12-06 18:36:58

log4j直接输出日志到flume的相关文章

Log4j指定输出日志的文件

在Log4j的配置文件中,有一个log4j.rootLogger用于指定将何种等级的信息输出到哪些文件中, 这一项的配置情况如下: log4j.rootLogger=日志等级,输出目的地1,输出目的地2,... 日志等级可以是ALL, DEBUG, INFO, WARN, ERROR, FATAL, OFF,一般主要都是使用DEBUG, INFO, WARN, ERROR这四项. 指定日志等级后,可以指定日志输出的目的地,这个目的地可以是任意的符合命名规则的名字,给出这些名字后,会在后面对这些名

log4j分级输出日志文件

关于LOG4J 按照级别输出日志,并按照级别输出到不同文件中的说法有很多, 网上贴的最多的log4j.properties的设置是这样的 [java] view plain copy log4j.rootLogger=info,stdout,info,debug,error log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayo

使用slf4j + log4j.properties 输出日志 到 控制台 和 执行文件

-- log4j.properties内容如下,将该文件放入 src/main/resource下,如下图: ### 设置rootLogger : 将debug及其更高level的日志输出到 控制台 和 指定路径文件 ### log4j.rootLogger = debug,stdout,file ### 输出信息到控制台 ### ### 控制台输出 log4j.appender.stdout = org.apache.log4j.ConsoleAppender ### 默认是system.ou

kettle使用log4j管理输出日志

在使用kettle进行数据分析和清洗时日志非常多而且杂乱,使用原有的日志有时找不到异常的位置,有时日志不够详细,说简单一点就是日志不是我们想要的.因而对kettle日志进行相应的管理就想得尤为重要了.大家都知道java最常用的日志管理包log4j可以很好地实现java日志的管理,然而kettle是使用java开发的,因而log4j是个不二的选择.好了说了这么多,下面看看kettle怎么使用log4j进行日志的管理吧. 1.kettle加载和使用log4j 在转换的JavaScript中添加log

springboot配置Log4j(将输出日志打印在控制台)

在springboot整合mybatis开发过程中,配置Log4j文件以便查看Mybatis操作数据库的过程 编辑器:IDEA 第一步:pom.xml中引入依赖(mybatis依赖和log4j2依赖) 如下: #在spring-boot-starter-web中自动配置了logging依赖,在使用Log4j时需要先排除其依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId&g

基于Flume+LOG4J+Kafka的日志采集架构方案

本文将会介绍如何使用 Flume.log4j.Kafka进行规范的日志采集. Flume 基本概念 Flume是一个完善.强大的日志采集工具,关于它的配置,在网上有很多现成的例子和资料,这里仅做简单说明不再详细赘述.Flume包含Source.Channel.Sink三个最基本的概念: Source——日志来源,其中包括:Avro Source.Thrift Source.Exec Source.JMS Source.Spooling Directory Source.Kafka Source.

【转】Log4j按级别输出日志到不同文件配置分析

关于LOG4J 按照级别输出日志,并按照级别输出到不同文件中的说法有很多, 网上贴的最多的log4j.properties的设置是这样的 log4j.rootLogger=info,stdout,info,debug,error log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdou

log4j输出日志乱码(转)

log4j日志文件乱码问题的解决方法 log4j日志文件中文乱码处理方法 log4j 控制台和文件输出乱码问题解决 写在前面,第三篇文章中将原因解释的最清楚,为什么设置为UTF-8或者GBK就生效了,原因是类文件的编码和输入日志的编码必须一致,否则就会出现乱码. 转:log4j日志文件乱码问题的解决方法 近日在AIX上用log4j打印日志,出现乱码,经过努力解决问题. 症状:在默认语言非中文(或者说默认语言不支持中文的)的Windows.Linux.Unix上,用log4j打印日志,出现乱码,常

Log4j按级别输出日志到不同文件配置

1.自定义LogFileAppender类,继承DailyRollingFileAppender,实现Log4j按级别输出日志到不同文件. package com.liying.mango.common.interceptor; import org.apache.log4j.DailyRollingFileAppender; import org.apache.log4j.Priority; public class LogFileAppender extends DailyRollingFi