GraphTraversalSource Causing log4j:WARN No appenders could be found for logger (org.apache.commons.beanutils.converters.BooleanConverter)

问题描述 投票:0回答:1

问题

如何修复Log4j2警告 当使用Tinkerpop-3-Gremlin(语言)-

GraphTraveralSource
?

试过

src/main/java/main.java

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource;

import static org.apache.tinkerpop.gremlin.process.traversal.AnonymousTraversalSource.traversal;

public class Main {
    private static final Logger logger = LogManager.getLogger(Main.class);
    public static void main(String[] args) throws Exception {
        System.out.println("Hello world!");
        logger.info("Hello world!");
        GraphTraversalSource g = traversal().withRemote("conf/remote-graph.properties");
    }
}

src/java/main/resources/log4j2.xml

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="warn" name="MyApp">
    <Properties>
        <Property name="baseDir">logs</Property>
    </Properties>
    <Appenders>
        <RollingFile name="RollingFile" fileName="${baseDir}/${date:yyyy-MM-dd}/log-${date:yyyy-MM-dd}.log"
                     filePattern="logs/$${date:yyyy-MM}/app-%d{yyyy-MM-dd-HH}-%i.log.gz">
            <PatternLayout>
                <Pattern>%d [%p] [%c{1.}.%t] ::&#x09; %m%n</Pattern>
            </PatternLayout>
            <Policies>
                <TimeBasedTriggeringPolicy interval="6" modulate="true"/>
                <SizeBasedTriggeringPolicy size="250 MB"/>
            </Policies>
        </RollingFile>
        <Console name="STDOUT" target="SYSTEM_OUT">
            <PatternLayout>
                <Pattern>%d [%p] [%c{1.}.%t] ::&#x09; %m%n</Pattern>
            </PatternLayout>
        </Console>
    </Appenders>
    <Loggers>
        <Root level="debug">
            <AppenderRef ref="STDOUT"/>
            <AppenderRef ref="RollingFile"/>
        </Root>
    </Loggers>
</Configuration>

pom.xml
依赖关系:

    <dependencies>
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-core</artifactId>
            <version>2.20.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-api</artifactId>
            <version>2.20.0</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>1.7.5</version>
        </dependency>
    </dependencies>

期待

当我注释掉

GraphTraversalSource
时这很好用,但当它重新评论时失败了。
Log4j2-logger 确实显示“Hello world!”很好,就像 System.out 一样。
这只是 OrientDB 设置的复制粘贴,而不是使用 OrientGraph:

        OrientGraph orientGraph = OrientGraph.open(configuration);
        GraphTraversalSource g = orientGraph.traversal();

实际

Hello world!
2023-04-28 09:14:06,725 [INFO] [Main.main] ::    Hello world!
log4j:WARN No appenders could be found for logger (org.apache.commons.beanutils.converters.BooleanConverter).
log4j:WARN Please initialize the log4j system properly.
log4j log4j2 gremlin tinkerpop3 gremlin-java
1个回答
1
投票

谢谢Piotr P. Karwasz

关闭 slf4j 确实解决了我的问题。

        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-core</artifactId>
            <version>2.20.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-api</artifactId>
            <version>2.20.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-slf4j2-impl</artifactId>
            <version>2.20.0</version>
        </dependency>
<!--        <dependency>-->
<!--            <groupId>org.slf4j</groupId>-->
<!--            <artifactId>slf4j-log4j12</artifactId>-->
<!--            <version>1.7.5</version>-->
<!--        </dependency>-->
        <dependency>
            <groupId>org.janusgraph</groupId>
            <artifactId>janusgraph-core</artifactId>
            <version>1.0.0-20230424-065649.dcd3240</version>
        </dependency>
        <dependency>
            <groupId>org.apache.tinkerpop</groupId>
            <artifactId>gremlin-core</artifactId>
            <version>3.6.2</version>
        </dependency>

注意

pom.xml
顺序在这里很重要;
如果 Janusgraph + Tinkerpop 在 Log4j2 依赖项之前出现,则会抛出错误。

│   pom.xml
│       
├───src
│   └───main
│       ├───java
│       │       Main.java
│       │
│       └───resources
│           │   log4j2.xml
│           │
│           └───conf
│                   remote-graph.properties
│                   remote-objects.yaml
© www.soinside.com 2019 - 2024. All rights reserved.