log4j在通过胖罐执行主应用程序时不使用第三方appender(SumoLogic)

时间:2018-04-24 18:32:54

标签: java maven log4j

我使用maven-assembly-plugin插件编译胖罐。我在log4j2

中有pom.xml和这些依赖项
<dependencies>
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-api</artifactId>
        <version>2.11.0</version>
    </dependency>
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-core</artifactId>
        <version>2.11.0</version>
    </dependency>
    <dependency>
        <groupId>com.sumologic.plugins.log4j</groupId>
        <artifactId>sumologic-log4j2-appender</artifactId>
        <version>1.2</version>
    </dependency>
    <dependency>
        <groupId>org.apache.httpcomponents</groupId>
        <artifactId>httpclient</artifactId>
        <version>4.5.2</version>
    </dependency>
</dependencies>

当我在log4j XML配置文件中配置记录器时,我指定了SumoAppender和一个控制台输出appender。

当我通过mvn exec:java运行主应用时,SumoLogic appender可以工作。

然而,当我编译一个胖jar并通过java -jar fatjar.jar运行应用程序时,SumoLogic Appender根本不运行,并且没有输出错误。

我使用Class.forName("com.sumologic.log4j.SumoLogicAppender")检查了我的应用程序中是否存在该类,并且该包确实存在。

有谁知道发生了什么事?

1 个答案:

答案 0 :(得分:0)

我有一个非常类似的问题 - 在我的情况下mvn camel:运行正常,但java -jar没有。

将sumologic包添加到log4j2配置文件中就可以了:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration packages="com.sumologic.log4j">
<Appenders>
<SumoLogicAppender
....

与创建自定义附加程序时的策略相同 - How to Create a Custom Appender in log4j2?