Thanks Ralph. I looked at POM but could not find how to use both log4j1.2.x and log4j2 together. I can run embedded agent code with log4j2 alone fine. The issue is that Hadoop Mapreduce code using log4j call my PIG UDF(user defined function) which uses log4j2. Somehow, I have to make these two co-exist.
On Fri, Oct 19, 2012 at 11:02 AM, Ralph Goers <[email protected]>wrote: > I've gotten the embedded agent working. It is a bit messy with dependency > management. Here is a sample pom. I will add this to the documentation. > > <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/xsd/maven-4.0.0.xsd"> > <modelVersion>4.0.0</modelVersion> > <groupId>com.myapp</groupId> > <artifactId>myapp</artifactId> > <version>0.0.1-SNAPSHOT</version> > <name>My App</name> > <description>App to test log4j appender</description> > > <properties> > <log4j.version>2.0-beta1</log4j.version> > <slf4j.version>1.6.6</slf4j.version> > <jackson.version>1.9.3</jackson.version> > </properties> > > <dependencyManagement> > <dependencies> > <dependency> > <groupId>org.slf4j</groupId> > <artifactId>slf4j-api</artifactId> > <version>${slf4j.version}</version> > </dependency> > <dependency> > <groupId>org.slf4j</groupId> > <artifactId>slf4j-ext</artifactId> > <version>${slf4j.version></version> > </dependency> > <dependency> > <groupId>org.apache.logging.log4j</groupId> > <artifactId>log4j-api</artifactId> > <version>${log4j2_version}</version> > </dependency> > <dependency> > <groupId>org.apache.logging.log4j.adapters</groupId> > <artifactId>log4j12-api</artifactId> > <version>${log4j2_version}</version> > </dependency> > <dependency> > <groupId>org.apache.logging.log4j</groupId> > <artifactId>log4j-core</artifactId> > <version>${log4j2_version}</version> > </dependency> > <dependency> > <groupId>org.apache.logging.log4j.adapters</groupId> > <artifactId>log4j-flume-ng</artifactId> > <version>${log4j2_version}</version> > </dependency> > <dependency> > <groupId>org.apache.logging.log4j.adapters</groupId> > <artifactId>slf4j-impl</artifactId> > <version>${log4j2_version}</version> > </dependency> > <dependency> > <groupId>org.apache.logging.log4j.adapters</groupId> > <artifactId>log4j-jcl</artifactId> > <version>${log4j2_version}</version> > </dependency> > <dependency> > <groupId>org.apache.logging.log4j.adapters</groupId> > <artifactId>log4j-web</artifactId> > <version>${log4j2_version}</version> > </dependency> > <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> > <dependency> > <groupId>org.codehaus.jackson</groupId> > <artifactId>jackson-jaxrs</artifactId> > <version>${jackson.version}</version> > </dependency> > <dependency> > <groupId>org.codehaus.jackson</groupId> > <artifactId>jackson-xc</artifactId> > <version>${jackson.version}</version> > </dependency> > </dependencies> > </dependencyManagement> > > <dependencies> > <!-- Log4j 2 API --> > <dependency> > <groupId>org.apache.logging.log4j</groupId> > <artifactId>log4j-api</artifactId> > </dependency> > <!-- Log4j 1.x API --> > <dependency> > <groupId>org.apache.logging.log4j.adapters</groupId> > <artifactId>log4j12-api</artifactId> > </dependency> > <!-- Log4j 2 implementation --> > <dependency> > <groupId>org.apache.logging.log4j</groupId> > <artifactId>log4j-core</artifactId> > </dependency> > <!-- SLF4J to Log4j 2 binding --> > <dependency> > <groupId>org.apache.logging.log4j.adapters</groupId> > <artifactId>slf4j-impl</artifactId> > </dependency> > <!-- SLF4J API --> > <dependency> > <groupId>org.slf4j</groupId> > <artifactId>slf4j-api</artifactId> > </dependency> > <!-- SLF4J extensions --> > <dependency> > <groupId>org.slf4j</groupId> > <artifactId>slf4j-ext</artifactId> > </dependency> > <!-- Commson Logging to Log4j 2 binding --> > <dependency> > <groupId>org.apache.logging.log4j.adapters</groupId> > <artifactId>log4j-jcl</artifactId> > </dependency> > <!-- Log4j 2 Servlet Context Listener --> > <dependency> > <groupId>org.apache.logging.log4j.adapters</groupId> > <artifactId>log4j-web</artifactId> > </dependency> > <!-- Avro transport protocol - required for Flume --> > <dependency> > <groupId>org.apache.avro</groupId> > <artifactId>avro</artifactId> > <version>1.6.3</version> > </dependency> > <!-- Hadoop core - required by embedded Flume Agent --> > <dependency> > <groupId>org.apache.hadoop</groupId> > <artifactId>hadoop-core</artifactId> > <version>1.0.3</version> > <exclusions> > <exclusion> > <groupId>org.mortbay.jetty</groupId> > <artifactId>servlet-api</artifactId> > </exclusion> > <exclusion> > <groupId>org.mortbay.jetty</groupId> > <artifactId>servlet-api-2.5</artifactId> > </exclusion> > <exclusion> > <groupId>junit</groupId> > <artifactId>junit</artifactId> > </exclusion> > </exclusions> > </dependency> > <!-- Flume File Channel - required by embedded Flume agent --> > <dependency> > <groupId>org.apache.flume.flume-ng-channels</groupId> > <artifactId>flume-file-channel</artifactId> > <version>1.2.0</version> > <exclusions> > <exclusion> > <groupId>log4j</groupId> > <artifactId>log4j</artifactId> > </exclusion> > <exclusion> > <groupId>org.slf4j</groupId> > <artifactId>slf4j-log4j12</artifactId> > </exclusion> > </exclusions> > </dependency> > </dependencies> > </project> > > > On Oct 19, 2012, at 8:50 AM, Zhu Wayne wrote: > > > Greetings! > > I am trying to use Log4j2 Flume Embedded Agent in PIG UDF code to send > UDF > > logs from Data Nodes. However, Hadoop is on log4j 1.2.x version. How > could > > I use both log4j and log4j2 on the same JVM? PIG UDF using log4j2 will be > > called in Hadoop MapReduce using log4j 1.2.x. > > > > Regards, > > Wayne > >
