flume+log4j整合到web项目

11 篇文章 0 订阅
11 篇文章 0 订阅

转载自:http://blog.csdn.net/killy_uc/article/details/22918615

这里的我的maven来构建此项目pom里面内容如下:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>Flume-master</groupId>
    <artifactId>Flume-master</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>war</packaging>
    <name>Flume-master</name>
    <properties>
        <jackson.version>1.9.3</jackson.version>
        <flume.version>1.4.0</flume.version>
        <tomcat.version>7.0.42</tomcat.version>
        <jetty.version>8.1.13.v20130916</jetty.version>
    </properties>
    <repositories>
        <repository>
            <id>oracleReleases</id>
            <name>Oracle Released Java Packages</name>
            <url>http://download.oracle.com/maven</url>
            <layout>default</layout>
        </repository>
        <repository>
            <id>java.net2</id>
            <name>Repository hosting the jee6 artifacts</name>
            <url>http://download.java.net/maven/2</url>
        </repository>
    </repositories>
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.codehaus.jackson</groupId>
                <artifactId>jackson-core-asl</artifactId>
                <version>${jackson.version}</version>
            </dependency>
            <dependency>
                <groupId>org.codehaus.jackson</groupId>
                <artifactId>jackson-mapper-asl</artifactId>
                <version>${jackson.version}</version>
            </dependency>
        </dependencies>
    </dependencyManagement>
    <dependencies>
    <dependency>
       <groupId>javax</groupId>
       <artifactId>javaee-web-api</artifactId>
       <version>6.0</version>
       <scope>provided</scope>
    </dependency>
    <dependency>
       <groupId>jstl</groupId>
       <artifactId>jstl</artifactId>
       <version>1.2</version>
    </dependency>        
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>1.7.5</version>
        </dependency>
        <dependency>
            <groupId>org.apache.flume.flume-ng-clients</groupId>
            <artifactId>flume-ng-log4jappender</artifactId>
            <version>${flume.version}</version>
            <exclusions>
                <exclusion>
                    <groupId>org.mortbay.jetty</groupId>
                    <artifactId>jetty</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.mortbay.jetty</groupId>
                    <artifactId>jetty-util</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.11</version>
            <scope>test</scope>
        </dependency>
    </dependencies>
    <build>
        <finalName>FlumeWebApp</finalName>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
                <includes>
                    <include>**/*</include>
                </includes>
            </resource>
        </resources>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.apache.tomcat.maven</groupId>
                    <artifactId>tomcat7-maven-plugin</artifactId>
                    <version>2.1</version>
                </plugin>
            </plugins>
        </pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.3.2</version>
                <inherited>true</inherited>
                <configuration>
                    <source>1.6</source>
                    <target>1.6</target>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <version>2.1.1</version>
                <configuration>
                    <failOnMissingWebXml>false</failOnMissingWebXml>
                </configuration>
            </plugin>
            <!--
            <plugin>
                <groupId>org.apache.tomcat.maven</groupId>
                <artifactId>tomcat7-maven-plugin</artifactId>
            </plugin>
            -->
            <plugin>
                <groupId>org.mortbay.jetty</groupId>
                <artifactId>jetty-maven-plugin</artifactId>
                <version>${jetty.version}</version>
                <configuration>
                    <stopPort>9999</stopPort>
                    <stopKey>stop</stopKey>
                    <webApp>
                        <contextPath>/${project.build.finalName}</contextPath>
                    </webApp>
                </configuration>
            </plugin>
        </plugins>
    </build>
    <profiles>
        <profile>
            <id>hdfs</id>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
            <properties>
                <flume.Port>44444</flume.Port>
            </properties>
        </profile>
        <profile>
            <id>hbase</id>
            <activation>
                <activeByDefault>false</activeByDefault>
            </activation>
            <properties>
                <flume.Port>61616</flume.Port>
            </properties>
        </profile>
    </profiles>
</project>

这里可能依赖了一些多余的jar,但是最好还是全要了先,

  然后再项目的log4j.properties里面添加flume的日志配置

log4j.rootCategory = DEBUG,console
log4j.appender.console = org.apache.log4j.ConsoleAppender
log4j.appender.console.layout = org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern = %d{HH:mm:ss} %p %c{1}: %m%n

log4j.logger.com.log.LogFilter = DEBUG,flume
log4j.additivity.com.log.LogFilter = false

log4j.appender.flume = org.apache.flume.clients.log4jappender.Log4jAppender
log4j.appender.flume.Hostname = localhost.localdomain
log4j.appender.flume.Port = 44444
log4j.appender.flume.UnsafeMode = true
log4j.appender.flume.layout = org.apache.log4j.PatternLayout
log4j.appender.flume.layout.ConversionPattern = %d{mm}\t%d{ss}\t%p\t%c{1}\t%m

然后写一些log4j的日志打印信息,这里我在一个过滤里面写,

package com.log;

import java.io.IOException;
import java.sql.Date;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;

import org.apache.log4j.Logger;

/**
 */
@WebFilter(value = "/log/*")
public class LogFilter implements Filter
{
    private Logger m_logger = Logger.getLogger(getClass());

    @Override
    public void init(final FilterConfig filterConfig) throws ServletException
    {

    }

    @Override
    public void doFilter(
            final ServletRequest servletRequest,
            final ServletResponse servletResponse,
            final FilterChain filterChain) throws IOException, ServletException
    {
//    	m_logger.debug("---------------------------------"+filterChain);
    	System.out.println("--"+filterChain);
        if (servletRequest instanceof HttpServletRequest)
        {
            final HttpServletRequest httpServletRequest = (HttpServletRequest) servletRequest;
            final String queryString = httpServletRequest.getQueryString();
            final String pathInfo = httpServletRequest.getRequestURI();
            System.out.println("---------------------------------"+queryString);
            if (pathInfo.endsWith("/debug/"))
            {
                m_logger.debug(queryString);
            }
            else if (pathInfo.endsWith("/error/"))
            {
                m_logger.error(queryString);
            }
            else if (pathInfo.endsWith("/warn/"))
            {
                m_logger.warn(queryString);
            }
            else
            {
                m_logger.info(queryString);
            }
        }
        filterChain.doFilter(servletRequest, servletResponse);
    }

    @Override
    public void destroy()
    {
    }
}

然后将项目的war包放到linux的tomcat上,访问项目后,你会看到agent会接收到项目里面的log日志了,这里的启动flume的agent部分就不说了。

详细代码可以参考github的源码flumeMaster


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值