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