简体   繁体   English

添加 Pulsar appender 时收到 log4j2 的“No appender found”错误

[英]Receiving “No appender found” error for log4j2 when adding Pulsar appender

I'm working on a complex application that uses an Ignite version of log4j2.我正在开发一个使用 Ignite 版本的 log4j2 的复杂应用程序。 It works perfectly fine, but when I try to add a Pulsar appender it throws an error:它工作得很好,但是当我尝试添加一个 Pulsar appender时,它会抛出一个错误:

log4j:WARN No appenders could be found for logger (org.apache.pulsar.shade.io.netty.util.internal.logging.InternalLoggerFactory).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.

I can't really figure out why it's failing to find the log4j2.xml file because without the Pulsar appender it works fine, so it must be on the classpath.我真的不明白为什么它找不到 log4j2.xml 文件,因为没有 Pulsar appender 它工作正常,所以它必须在类路径上。 I'm guessing it must be a conflict with the ignite-log4j2 dependency and pulsar-log4j2-appender dependency.我猜它一定是与 ignite-log4j2 依赖和 pulsar-log4j2-appender 依赖冲突。

This is what my pom.xml looks like:这就是我的pom.xml 的样子:

   <dependencies>
        <dependency>
            <groupId>org.apache.ignite</groupId>
            <artifactId>ignite-spring</artifactId>
            <version>${ignite.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.ignite</groupId>
            <artifactId>ignite-zookeeper</artifactId>
            <version>${ignite.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.ignite</groupId>
            <artifactId>ignite-urideploy</artifactId>
            <version>${ignite.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.ignite</groupId>
            <artifactId>ignite-log4j2</artifactId>
            <version>${ignite.version}</version>
        </dependency>
        <dependency>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
            <version>2.8.6</version>
        </dependency>
        <dependency>
            <groupId>org.apache.pulsar</groupId>
            <artifactId>pulsar-client</artifactId>
            <version>${pulsar.version}</version>
        </dependency>
        <dependency>
            <groupId>org.java-websocket</groupId>
            <artifactId>Java-WebSocket</artifactId>
            <version>1.3.8</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
        </dependency>

        <!-- Pulsar logging -->
        <dependency>
            <groupId>org.apache.pulsar</groupId>
            <artifactId>pulsar-log4j2-appender</artifactId>
            <version>2.6.0</version>
            <exclusions>
                <exclusion>
                    <groupId>org.apache.logging.log4j</groupId>
                    <artifactId>log4j-slf4j-impl</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.apache.pulsar</groupId>
                    <artifactId>pulsar-client</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.apache.logging.log4j</groupId>
                    <artifactId>log4j-api</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.apache.logging.log4j</groupId>
                    <artifactId>log4j-core</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>

And my log4j2.xml :还有我的log4j2.xml

<Configuration monitorInterval="60">
    <Appenders>
        <Console name="CONSOLE" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{hh:mm:ss,SSS} [%t] %-5p %c %x - %m%n"/>
            <ThresholdFilter level="ERROR" onMatch="DENY" onMismatch="ACCEPT"/>
        </Console>

        <Console name="CONSOLE_ERR" target="SYSTEM_ERR">
            <PatternLayout pattern="[%d{ISO8601}][%-5p][%t][%c{1}]%notEmpty{[%markerSimpleName]} %m%n"/>
        </Console>

        <Routing name="FILE">
            <Routes pattern="$${sys:nodeId}">
                <Route>
                    <RollingFile name="Rolling-${sys:nodeId}" fileName="ignite/work/log/ignite-${sys:nodeId}.log"
                                 filePattern="ignite/work/log/ignite-${sys:nodeId}-%i-%d{yyyy-MM-dd}.log.gz">
                        <PatternLayout pattern="[%d{ISO8601}][%-5p][%t][%c{1}]%notEmpty{[%markerSimpleName]} %m%n"/>
                        <Policies>
                            <TimeBasedTriggeringPolicy interval="6" modulate="true" />
                            <SizeBasedTriggeringPolicy size="10 MB" />
                        </Policies>
                    </RollingFile>
                </Route>
            </Routes>
        </Routing>
        <Pulsar name="PULSAR" serviceUrl="pulsar://172.21.11.82:6650" topic="json_persistor"  avoidRecursive="false">
            <PatternLayout pattern="%msg%n"/>
        </Pulsar>
    </Appenders>

    <Loggers>
        <Logger name="org.apache.pulsar" level="INFO"/> <!-- to avoid recursive logging -->
        <Logger name="com.coinflex.common.persistor.JsonObjectPersistor" level="INFO" additivity="false">
            <AppenderRef ref="PULSAR"/>
        </Logger>

        <Logger name="org.apache.ignite" level="ERROR"/>
        <Logger name="org.springframework" level="WARN"/>
        <Logger name="org.eclipse.jetty" level="WARN"/>
        <Logger name="org.eclipse.jetty.util.log" level="ERROR"/>
        <Logger name="org.eclipse.jetty.util.component" level="ERROR"/>
        <Logger name="com.amazonaws" level="WARN"/>

        <Root level="INFO">
            <AppenderRef ref="CONSOLE" level="INFO"/>
            <AppenderRef ref="CONSOLE_ERR" level="ERROR"/>
            <AppenderRef ref="FILE" level="DEBUG"/>
        </Root>
    </Loggers>
</Configuration>

The error message you are getting is coming from Log4J 1. This indicates Log4J 2 isn't being used, which would explain why it can't find the pulsar appender.您收到的错误消息来自 Log4J 1。这表明 Log4J 2 没有被使用,这可以解释为什么它找不到脉冲星附加器。

If you want to use Log4J 2 you need to re-examine your dependencies.如果你想使用 Log4J 2 你需要重新检查你的依赖。

This also indicates it isn't using your logging configuration.这也表明它没有使用您的日志记录配置。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM