log4j2 相关问题

Log4j 2是Log4j的升级版,Log4j是一个基于Java的日志记录实用程序,它比其前身Log4j 1.x提供了重大改进,并提供了Logback中可用的许多改进,同时修复了Logback架构中的一些固有问题。

slf4j-log4j12 和 log4j-slf4j-impl 之间的区别

在一些使用 slf4j 和 log4j 的项目中,我可以看到类似的依赖关系 编译('org.apache.logging.log4j:log4j-core:版本') 编译('org.apache.logging.log4j:log4j-api:版本') 编译('org.apa...

回答 1 投票 0

Log4j 不记录完整的堆栈跟踪?

我正在将 SLF4j 与 Log4j2 结合使用。 SLF4j版本是1.7.22,Log4j2版本是2.8.2。 当我在方法中使用 Log4j2 记录异常时,它只记录一行。 我希望日志能够显示完整的...

回答 1 投票 0

Log4j2 线程名称过滤器

我们有一个 log4j2 模式布局,如下所示: %d{ISO8601} %5p - [%t] - %m%n 线程名称被打印...

回答 1 投票 0

引起:java.lang.NoClassDefFoundError:org/apache/log4j/Level

我必须将日志记录功能从log4j-1.2.13升级到log4j-api-2.23.0。 早些时候,我的 WebContent\WEB-INF\lib 文件夹中有以下这些 jar log4j-1.2.13.jar log4j.jar 所以我已经删除了

回答 1 投票 0

apache-log4j-extras jar 可以与 apache log4j 2.x 一起使用

apache-log4j-extras jar 可以与 apache log4j 2.x jar 一起使用,还是已弃用? 发现该 jar 的最新更新是在 1.2.17 版本。

回答 1 投票 0

WSO2 MI 4.2.0 log4j 操作删除中的问题

WSO2 MI 4.2.0 我正在使用 Wso2 微积分器版本 4.2.0。以及基于日志文件时间段的滚动策略。我正在尝试删除超过 58 天的旧滚动文件,这意味着......

回答 1 投票 0

Maven/Java/Helidon MP:Log4j2.xml <JSONLayout>导致与自定义注释处理器发生冲突

我有一个多模块 Maven 项目。模块 A 有一个注释处理器,模块 B 在其 pom.xml 中依赖于模块 A。模块 B 还有一个 src/main/resources/META-INF/services/javax。

回答 1 投票 0

如何在Log4J2中使用service loader服务动态设置日志目录?

我知道在 Log4j2 中您可以使用以下方法动态设置日志目录: System.setProperty('logDirectory', getLogDirectoryDynamically()); 并在 Log4j2 中使用该值

回答 1 投票 0

Spring Boot 项目中布局元素的 Log4j2 CLASS_NOT_FOUND 错误

我最近在 Spring Boot 项目中迁移到 Log4j2,并遇到了与 log4j2.xml 中的布局配置相关的错误。尽管遵循了推荐的配置步骤,我仍然

回答 1 投票 0

log4j2 可在 Mac 上运行,但不能在 Windows 上运行

我有 log4j2 在 Springboot 中工作,在 Mac 上运行良好。 log4j.properties 文件位于 /src/main/resources 文件夹中。 在 Mac 上,日志工作正常。然而,在 Windows 上,相同的 SpringBoot Tomcat

回答 1 投票 0

log4j2 错误 StatusLogger 无法识别的转换说明符

我的项目中有log4j2,当我在intellij Idea中运行main方法时,打印日志是正确的。 当我使用 maven-shade-plugin 包项目来生成 jar 文件,并将 jar 作为独立应用程序运行时,它...

回答 10 投票 0

如何使用log4j2删除旧日志

(仅供参考,我已经在网上查了很多文档。我使用的是storm-0.10.0-beta1。Storm中log4j2的配置文件是worker.xml) 现在,我尝试使用log4j2。 我正在寻找方法

回答 3 投票 0

Log4j2 - 如何添加运行时上下文以便所有日志记录都包含该上下文?

例如,假设我有在运行时确定的应用程序版本。我希望所有日志消息都显示应用程序版本。 我知道有ThreadContext。我的理解是...

回答 1 投票 0

Log4j2 控制台附加程序出现 NullpointerException

我的应用程序日志记录在测试中的 Maven 构建期间崩溃。这是我在 src/test/resources 中的 log4j2.xml: 我的应用程序日志记录在测试中的 Maven 构建期间崩溃。这是我在 src/test/resources 中的 log4j2.xml: <?xml version="1.0" encoding="UTF-8"?> <Configuration status="INFO"> <Appenders> <Console name="stdout" target="SYSTEM_OUT"> <PatternLayout pattern="MyApp: %d{yyyy-MM-dd HH:mm:ss,SSS} %5p [%t] %c{1.} - %m%n" /> </Console> </Appenders> <Loggers> <Logger name="com.my.app" level="info" additivity="false"> <Appender-ref ref="stdout"/> </Logger> <Root level="error"> <Appender-ref ref="stdout"/> </Root> </Loggers> </Configuration> 我在构建过程中的测试过程中遇到了这个异常: 2017-11-23 15:12:28,371 main ERROR An exception occurred processing Appender stdout java.lang.NullPointerException at org.apache.logging.log4j.core.impl.ThrowableProxy.toExtendedStackTrace(ThrowableProxy.java:671) at org.apache.logging.log4j.core.impl.ThrowableProxy.<init>(ThrowableProxy.java:138) at org.apache.logging.log4j.core.impl.ThrowableProxy.<init>(ThrowableProxy.java:122) at org.apache.logging.log4j.core.impl.Log4jLogEvent.getThrownProxy(Log4jLogEvent.java:566) at org.apache.logging.log4j.core.pattern.ExtendedThrowablePatternConverter.format(ExtendedThrowablePatternConverter.java:64) at org.apache.logging.log4j.core.pattern.PatternFormatter.format(PatternFormatter.java:38) at org.apache.logging.log4j.core.layout.PatternLayout$PatternSerializer.toSerializable(PatternLayout.java:333) at org.apache.logging.log4j.core.layout.PatternLayout.toText(PatternLayout.java:232) at org.apache.logging.log4j.core.layout.PatternLayout.encode(PatternLayout.java:217) at org.apache.logging.log4j.core.layout.PatternLayout.encode(PatternLayout.java:57) at org.apache.logging.log4j.core.appender.AbstractOutputStreamAppender.directEncodeEvent(AbstractOutputStreamAppender.java:177) at org.apache.logging.log4j.core.appender.AbstractOutputStreamAppender.tryAppend(AbstractOutputStreamAppender.java:170) at org.apache.logging.log4j.core.appender.AbstractOutputStreamAppender.append(AbstractOutputStreamAppender.java:161) at org.apache.logging.log4j.core.config.AppenderControl.tryCallAppender(AppenderControl.java:156) at org.apache.logging.log4j.core.config.AppenderControl.callAppender0(AppenderControl.java:129) at org.apache.logging.log4j.core.config.AppenderControl.callAppenderPreventRecursion(AppenderControl.java:120) at org.apache.logging.log4j.core.config.AppenderControl.callAppender(AppenderControl.java:84) at org.apache.logging.log4j.core.config.LoggerConfig.callAppenders(LoggerConfig.java:448) at org.apache.logging.log4j.core.config.LoggerConfig.processLogEvent(LoggerConfig.java:433) at org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:417) at org.apache.logging.log4j.core.config.LoggerConfig.logParent(LoggerConfig.java:439) at org.apache.logging.log4j.core.config.LoggerConfig.processLogEvent(LoggerConfig.java:434) at org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:417) at org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:403) at org.apache.logging.log4j.core.config.AwaitCompletionReliabilityStrategy.log(AwaitCompletionReliabilityStrategy.java:63) at org.apache.logging.log4j.core.Logger.logMessage(Logger.java:146) at org.apache.logging.log4j.spi.AbstractLogger.tryLogMessage(AbstractLogger.java:2116) at org.apache.logging.log4j.spi.AbstractLogger.logMessageSafely(AbstractLogger.java:2100) at org.apache.logging.log4j.spi.AbstractLogger.logMessage(AbstractLogger.java:1994) at org.apache.logging.log4j.spi.AbstractLogger.logIfEnabled(AbstractLogger.java:1966) at org.apache.logging.slf4j.Log4jLogger.error(Log4jLogger.java:319) at com.my.app.MyTest.testingMyApp(MyTest.java:89) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) at org.junit.internal.runners.statements.ExpectException.evaluate(ExpectException.java:19) at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26) at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268) at org.junit.runners.ParentRunner.run(ParentRunner.java:363) at org.mockito.internal.runners.JUnit45AndHigherRunnerImpl.run(JUnit45AndHigherRunnerImpl.java:37) at org.mockito.runners.MockitoJUnitRunner.run(MockitoJUnitRunner.java:62) at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:283) at org.apache.maven.surefire.junit4.JUnit4Provider.executeWithRerun(JUnit4Provider.java:173) at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:153) at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:128) at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:203) at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:155) at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:103) 这是我的pom: <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-api</artifactId> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</artifactId> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-web</artifactId> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-slf4j-impl</artifactId> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-jul</artifactId> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-jcl</artifactId> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> </dependency> <dependency> <groupId>org.dblock.log4jna</groupId> <artifactId>log4jna-api</artifactId> </dependency> log4j的版本是2.9.1 有趣的是,它会记录到控制台,例如当 Spring 应用程序启动时,我可以看到来自具有 @SpringBootApplication 注释的 MyApplication.java 的日志。 MyTest.java:89 是: logger.error("error occured",e); 记录器来自: import org.slf4j.Logger; import org.slf4j.LoggerFactory; 所以看起来它在错误日志期间崩溃了,但是如果我记录正常信息就没有问题。 那么这个空指针是什么? 好吧,我明白了:这是因为在测试类中我有一个模拟异常。如果我将其更改为从异常中创建一个新对象,它就可以正常工作。 我想它是报告错误的一个很好的候选者。 您作为 Exception 的参数传递的 Throwable 或 logger.error("error occured", e); 没有任何堆栈跟踪(其堆栈跟踪是 null),但是您正在使用的 Log4j2 实现尝试访问所述堆栈跟踪并抛出此错误。 查看源代码,抛出错误的行是: stackLength = stackTrace.length; 意味着 stackTrace 变量是 null。它是通过 throwable.getStackTrace() 从您作为参数传递给 的 Throwable (Exception) 获得的 logger.error("error occured", e); 至于为什么你的堆栈跟踪为空,这取决于你正在使用的JVM以及你如何得到所述异常。它可能会发生,但这绝对不是标准行为。你可以看看这个帖子和这个帖子。 如果您需要使用Mockito创建模拟异常,则可以设置getStackTrace方法以返回StackTraceElement的空数组: private Throwable logSafeExceptionMock(Class<? extends Throwable> exceptionType) { Throwable t = mock(exceptionType); when(t.getStackTrace()).thenReturn(new StackTraceElement[0]); return t; } 谢谢 Dmitry Timofeev,你拯救了我的一天!

回答 4 投票 0

重新编码/解析由log4j2创建的日志,返回LogEvents

我使用 log4j2 FileAppender 创建了日志文件。在不重新创建我自己的解析器的情况下,我试图找到一种方法来使用 log4j2 已有的内容来重新编码 lo...

回答 1 投票 0

Log4j2 smtp 附加程序在不指定 smtpPassword 字段的情况下是否可以工作?

在log4j2官方文档中有一个smtp附加器的代码片段。我的问题是没有包含smtpPassword字段。它会起作用吗?如果是的话那么我们到底在哪里

回答 1 投票 0

Log4j2 未记录到文件

我在我的应用程序中使用 Log4j2,它似乎加载和初始化得很好。 控制台被登录,2 个指定的文件附加程序创建各自的文件,但这些文件保持为空! 是我的

回答 3 投票 0

Log4j2 在 apender 中过滤特定级别

我应该使用什么过滤器来定义要使用附加程序记录的特定级别?例如: 爪哇: LOGGER.debug("调试消息"); LOGGER.info("信息消息"); 记录器.警告(“...

回答 7 投票 0

Log4j2 createOnDemand="true" 不允许每天创建新文件

Log4j2 createOnDemand="true" 不允许每天创建新文件,尽管使用带有 TimeBasedTriggeringPolicy 的 RollingFile Appender。 下面是我的 log4j2.xml 文件。 我哈...

回答 2 投票 0

Log4j2 未读取配置文件

请友善,我是日志记录的新手,即使在尝试了很多事情并完全按照文档进行操作之后,我还是遇到了 log4j2 的一些问题。 我花了整个早上的时间来尝试

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.