Hi everyone,
I tested the flume appender for log4j2. My configuration XML looks like
this:
<Configuration status="ERROR" name="some_name">
...
<Appenders>
...
<Flume name="FLUME" compress="true">
<Agent host="${FLUME_HOST}" port="${FLUME_PORT}"/>
<PatternLayout pattern="${LOG_PATTERN}"/>
<ThresholdFilter level="INFO" onMatch="ACCEPT" onMismatch="DENY"/>
</Flume>
</Appenders>
<Loggers>
<Root level="DEBUG">
<AppenderRef ref="FLUME"/>
...
</Root>
</Loggers>
</Configuration>
And I build my application with maven assembly plugin to get an uber jar
which contains all dependencies (I want to ship a single jar file to all
the destination runtime environments).
When I start the application I get the following error:
ERROR Error processing element Flume ([Appenders: null]): CLASS_NOT_FOUND
So it looks like there is some dependency missing. But in the official doc
I read that for remote mode of the flume appender I only need the following
dependency (including the necessary log4j dependencies):
<dependencies>
...
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.5</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.5</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>*log4j-flume-ng*</artifactId>
<version>2.5</version>
</dependency>
</dependencies>
Another hint: When I start the application from eclipse, it seems to work
totally fine (at least I don't get the error from above).
So what I am doing wrong here? Has anyone some advice for me? Thanks in
advance.
Julian