使用log4j2时获取log4j1错误



我已经尝试过了:将log4j 1.x和log4j 2与依赖于log4j 1.x 的第三方库混合

当我将jar文件部署到docker映像时,我得到了一个log4j1 appender错误,但当我在Eclipse中运行主方法时没有看到。

log4j:WARN找不到记录器的附加程序(等等(。log4j:WARN请正确初始化log4j系统。log4j:警告请参阅http://logging.apache.org/log4j/1.2/faq.html#noconfig了解更多信息。

以下是我的依赖

<dependencies>
<!-- QUARTZ Required -->
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.3.2</version>
</dependency>
<!-- Kafka -->
<dependency>
<groupId>org.apache.kafka</groupId>
<artifactId>kafka_2.12</artifactId>
<version>2.3.1</version>
</dependency>
<!-- SSO Web Form -->
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.11.3</version>
</dependency>
<dependency>
<groupId>net.sourceforge.htmlunit</groupId>
<artifactId>htmlunit</artifactId>
<version>2.34.1</version>
</dependency>
<!-- JSON -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.10.0</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.10.0</version>
</dependency>
<dependency>
<groupId>com.jayway.jsonpath</groupId>
<artifactId>json-path</artifactId>
<version>2.4.0</version>
</dependency>
<!-- CSV -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-csv</artifactId>
<version>1.7</version>
</dependency>
<!-- Logging -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.12.1</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.12.1</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-1.2-api</artifactId>
<version>2.12.1</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
<version>2.12.1</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.29</version>
</dependency>
<!-- SQL -->
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc</artifactId>
<version>${ojdbc.version}</version>
</dependency>
<!-- Test -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<version>2.8.9</version>
<scope>test</scope>
</dependency>
</dependencies>

我已经尝试删除所有可能引用log4j1进行编译和测试的内容(包括log4j-1.2-api((除了在我的代码中删除对slf4j的引用和使用log4j-api之外(,但没有成功。

我启动jar文件的命令是:

java -Dlog4j.configurationFile=$LOGGING_CFG -Ddatacollector.config.dir=$CONFIG_DIR -jar blah.jar

我验证了我的参数是否有效,并确保配置在IDE中有效。我甚至尝试用Configurator.initialize(name,filePath(编程加载文件。我怀疑log4j1在我的环境中,我想把它清除掉。

谢谢你的帮助。

我通过将maven汇编插件版本更新到3.1.1解决了这个问题。

<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<!-- Needed to get the correct log4j -->
<version>3.1.1</version>
<executions>
<execution>
<id>distrib</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<appendAssemblyId>false</appendAssemblyId><!--$NO-MVN-MAN-VER$ -->
<outputDirectory>docker/jar/</outputDirectory>
<archive>
<manifest>
<mainClass>my.main.class</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<finalName>my-app-${project.version}</finalName>
</configuration>
</execution>
</executions>
</plugin>

最新更新