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

然后写一个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.   
  10. 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-08-01 19:29:39

flume学习(一):log4j直接输出日志到flume的相关文章

log4j直接输出日志到flume

log4j直接输出日志到flume         此jar是由Cloudera的CDH发行版提供的一个工具类,通过配置,可以将log4j的日志直接输出到flume,方便日志的采集.         在CDH5.3.0版本中是:flume-ng-log4jappender-1.5.0-cdh5.3.0-jar-with-dependencies.jar         所在目录是:/opt/cloudera/parcels/CDH/lib/flume-ng/tools/ 具体使用示例 log4j

kettle使用log4j管理输出日志

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

MyBatis启动时控制台无限输出日志的原因及解决办法_java

你是否遇到过下面的情况,控制台无限的输出下面的日志: Logging initialized using 'class org.apache.ibatis.logging.log4j.Log4jImpl' adapter. Logging initialized using 'class org.apache.ibatis.logging.log4j.Log4jImpl' adapter. Logging initialized using 'class org.apache.ibatis.lo

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

在第一篇文章中我们是将log4j的日志输出到了agent的日志文件当中.配置文件如下: [plain] view plaincopy tier1.sources=source1   tier1.channels=channel1   tier1.sinks=sink1      tier1.sources.source1.type=avro   tier1.sources.source1.bind=0.0.0.0   tier1.sources.source1.port=44444   tier

LOG4J输出日志到web目录的相对路径

 LOG4J输出日志到web目录的相对路径 项目中必须是在使用spring web.xml加入 <span style="font-size:18px;"><context-param> <param-name>webAppRootKey</param-name> <param-value>webApp.root</param-value> </context-param> <context-

log4j设置了每天输出日志,但是现在该日志没有变动的话不会自动输出请问怎么改?

问题描述 log4j设置了每天输出日志,但是现在该日志没有变动的话不会自动输出请问怎么改? log4j.category.Task=INFO,Task log4j.additivity.Task=false log4j.appender.Task=org.apache.log4j.DailyRollingFileAppender log4j.appender.Task.file=/data/logs/Task_4_1.log log4j.appender.Task.DatePattern='.'

log4j输出日志了两遍,求高手帮忙看看

问题描述 log4j输出日志了两遍,求高手帮忙看看 我的项目是用log4j.xml配置的,配置了一个root,然后又配置了一个logger,nane=test,root和logger输出到不同的日志文件中,使用Logger.getLogger("test").info("test").结果两个日志文件都输出了日志,我的期望是只在test那个logger里输出,怎么做才能实现呢?

Flume + Solr + log4j搭建web日志采集系统

前言 很多web应用会选择ELK来做日志采集系统,这里选用Flume,一方面是因为熟悉整个Hadoop框架,另一方面,Flume也有很多的优点. 关于Apache Hadoop Ecosystem 请点击这里. Cloudera 官方的教程也是基于这个例子开始的,get-started-with-hadoop-tutorial 并且假设我们已经了解Flume(agent, Source, Channel, Sink) , Morphline (ETL), Solr (全文检索),如果都没有了解,

jsp-使用log4j输出日志记录

问题描述 使用log4j输出日志记录 我编写的代码是直接在jsp中的,业务逻辑处理也是在jsp中处理,我现在想使用日志管理,记录运行的过程及错误,但现在不知道眼怎么写,哪位大神会做呀,求指教 解决方案 第一步:首先建立一个WEB工程,去log4j官网下log4j的JAR包导入到工程的lib目录下 第二步:在src目录下建一个log4j.properties 文件,文件命名可以由自己,只是记加载时候和这里名字一致就行: log4j.properties 里边的内容如下: ### set log l