java - 如何修复处理元素 Flume : CLASS_NOT_FOUND? 错误

标签 java logging configuration log4j2 flume-ng

我们无法使用 log4j2 让 Flumeappender 工作。但是,使用 log4j.properties 配置文件,而不是通过 log4j2.xml。我们得到的错误是:错误处理元素Flume:CLASS_NOT_FOUND

以下是我的 Maven 依赖项:

<dependencies>
        <dependency>
            <groupId>org.apache.flume</groupId>
            <artifactId>flume-ng-sdk</artifactId>
            <version>1.5.0.1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-api</artifactId>
            <version>2.0.2</version>
        </dependency>
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-core</artifactId>
            <version>2.0.2</version>
        </dependency>
        <dependency>
            <groupId>org.apache.flume.flume-ng-clients</groupId>
            <artifactId>flume-ng-log4jappender</artifactId>
            <version>1.5.0.1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-slf4j-impl</artifactId>
            <version>2.0.2</version>
        </dependency>
    </dependencies>

以下是我的 log4j2.xml:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="debug" name="CE" packages="net.ahm.ce.server">
    <Appenders>
        <Flume name="eventLogger" compress="true" type="Embedded">
            <Agent host="192.168.4.16" port="41414" />
            <RFC5424Layout enterpriseNumber="18060" includeMDC="true"
                appName="CE" />
        </Flume>
    </Appenders>
    <Loggers>
        <Root level="debug">
            <AppenderRef ref="eventLogger" />
        </Root>
    </Loggers>
</Configuration>

启动时的日志:

2014-09-17 10:41:27,339 DEBUG Starting configuration XmlConfiguration[location=C:\dev\AHM\FlumePOC\server\target\classes\log4j2.xml]
2014-09-17 10:41:27,339 DEBUG Generated plugins in 0.001350 seconds, packages: [net.ahm.ce.server], preload: false.
2014-09-17 10:41:27,339 DEBUG Found Plugin Map at jar:file:/C:/Users/droy/.m2/repository/org/apache/logging/log4j/log4j-core/2.0.2/log4j-core-2.0.2.jar!/META-INF/org/apache/logging/log4j/core/config/plugins/Log4j2Plugins.dat
2014-09-17 10:41:27,588 DEBUG Generated plugins in 0.243478 seconds, packages: [net.ahm.ce.server, org.apache.logging.log4j.core], preload: true.
2014-09-17 10:41:27,604 ERROR Error processing element Flume: CLASS_NOT_FOUND
2014-09-17 10:41:27,697 DEBUG Generated plugins in 0.100369 seconds, packages: [net.ahm.ce.server, org.apache.logging.log4j.core], preload: false.
2014-09-17 10:41:27,697 DEBUG Building Plugin[name=appenders, class=org.apache.logging.log4j.core.config.AppendersPlugin]. Searching for builder factory method...
2014-09-17 10:41:27,697 DEBUG No builder factory method found in class org.apache.logging.log4j.core.config.AppendersPlugin. Going to try finding a factory method instead.
2014-09-17 10:41:27,697 DEBUG Still building Plugin[name=appenders, class=org.apache.logging.log4j.core.config.AppendersPlugin]. Searching for factory method...
2014-09-17 10:41:27,697 DEBUG Found factory method [createAppenders]: public static java.util.concurrent.ConcurrentMap org.apache.logging.log4j.core.config.AppendersPlugin.createAppenders(org.apache.logging.log4j.core.Appender[]).
2014-09-17 10:41:27,697 DEBUG Calling createAppenders on class org.apache.logging.log4j.core.config.AppendersPlugin for element Appenders with params(={})
2014-09-17 10:41:27,697 DEBUG Built Plugin[name=appenders] OK from factory method.
2014-09-17 10:41:27,697 DEBUG Building Plugin[name=AppenderRef, class=org.apache.logging.log4j.core.config.AppenderRef]. Searching for builder factory method...
2014-09-17 10:41:27,697 DEBUG No builder factory method found in class org.apache.logging.log4j.core.config.AppenderRef. Going to try finding a factory method instead.
2014-09-17 10:41:27,697 DEBUG Still building Plugin[name=AppenderRef, class=org.apache.logging.log4j.core.config.AppenderRef]. Searching for factory method...
2014-09-17 10:41:27,697 DEBUG Found factory method [createAppenderRef]: public static org.apache.logging.log4j.core.config.AppenderRef org.apache.logging.log4j.core.config.AppenderRef.createAppenderRef(java.lang.String,org.apache.logging.log4j.Level,org.apache.logging.log4j.core.Filter).
2014-09-17 10:41:27,713 DEBUG Calling createAppenderRef on class org.apache.logging.log4j.core.config.AppenderRef for element AppenderRef with params(ref="eventLogger", level="null", null)
2014-09-17 10:41:27,713 DEBUG Built Plugin[name=AppenderRef] OK from factory method.
2014-09-17 10:41:27,713 DEBUG Building Plugin[name=root, class=org.apache.logging.log4j.core.config.LoggerConfig$RootLogger]. Searching for builder factory method...
2014-09-17 10:41:27,713 DEBUG No builder factory method found in class org.apache.logging.log4j.core.config.LoggerConfig$RootLogger. Going to try finding a factory method instead.
2014-09-17 10:41:27,713 DEBUG Still building Plugin[name=root, class=org.apache.logging.log4j.core.config.LoggerConfig$RootLogger]. Searching for factory method...
2014-09-17 10:41:27,713 DEBUG Found factory method [createLogger]: public static org.apache.logging.log4j.core.config.LoggerConfig org.apache.logging.log4j.core.config.LoggerConfig$RootLogger.createLogger(java.lang.String,org.apache.logging.log4j.Level,java.lang.String,org.apache.logging.log4j.core.config.AppenderRef[],org.apache.logging.log4j.core.config.Property[],org.apache.logging.log4j.core.config.Configuration,org.apache.logging.log4j.core.Filter).
2014-09-17 10:41:27,713 DEBUG Calling createLogger on class org.apache.logging.log4j.core.config.LoggerConfig$RootLogger for element Root with params(additivity="null", level="DEBUG", includeLocation="null", ={eventLogger}, ={}, Configuration(CE), null)
2014-09-17 10:41:27,713 DEBUG Built Plugin[name=root] OK from factory method.
2014-09-17 10:41:27,713 DEBUG Building Plugin[name=loggers, class=org.apache.logging.log4j.core.config.LoggersPlugin]. Searching for builder factory method...
2014-09-17 10:41:27,713 DEBUG No builder factory method found in class org.apache.logging.log4j.core.config.LoggersPlugin. Going to try finding a factory method instead.
2014-09-17 10:41:27,713 DEBUG Still building Plugin[name=loggers, class=org.apache.logging.log4j.core.config.LoggersPlugin]. Searching for factory method...
2014-09-17 10:41:27,713 DEBUG Found factory method [createLoggers]: public static org.apache.logging.log4j.core.config.Loggers org.apache.logging.log4j.core.config.LoggersPlugin.createLoggers(org.apache.logging.log4j.core.config.LoggerConfig[]).
2014-09-17 10:41:27,713 DEBUG Calling createLoggers on class org.apache.logging.log4j.core.config.LoggersPlugin for element Loggers with params(={root})
2014-09-17 10:41:27,713 DEBUG Built Plugin[name=loggers] OK from factory method.
2014-09-17 10:41:27,713 ERROR Unable to locate appender eventLogger for logger 

最佳答案

我认为您配置的 Flume log4j 附加程序适用于 log4j-1.2。尝试删除此部分

    <dependency>
        <groupId>org.apache.flume.flume-ng-clients</groupId>
        <artifactId>flume-ng-log4jappender</artifactId>
        <version>1.5.0.1</version>
    </dependency>

而是配置 log4j2 中包含的 Flume log4j 附加程序。我认为这应该有效:

    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-flume-ng</artifactId>
        <version>2.0.2</version>
    </dependency>

log4j2 Flume Appender 手册页有更多详细信息:http://logging.apache.org/log4j/2.x/log4j-flume-ng/index.html

关于java - 如何修复处理元素 Flume : CLASS_NOT_FOUND? 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25893876/

相关文章:

c# - 这个永久的 SQLExpress 连接字符串来自哪里(不是 web.config)?

java - SwipeRefreshLayout 与 Webview 不工作

java - 将 jfreechart 导出为 pptx 作为 EMF 图像 - 线条渲染不正确

java - 将 Docker 的 splunk 日志驱动程序拆分为多个索引

跨多个类和文件的 Python 日志记录;如何配置才能轻松禁用?

Java 日志记录异常,使用 getMessage 或 toString : log. warn(ex.getMessage()) 或 log.warn(ex) 使用开源

Java 传输对象,它是什么?

java - 包括整个项目作为库 android studio

python - 如何在 Linux 中配置 sys.path 变量?

java - Apache Commons Configuration2 - 类路径中的多个同名配置文件