appender是日志系统中“输出通道”的隐喻。
我使用 log4net.Appender.AdoNetAppender 附加程序。 我的 log4net 表有以下字段 [Date]、[Thread]、[Level]、[Logger]、[Message]、[Exception] 我需要向 log4 添加另一个字段...
对于一个项目,我有一个多次启动的程序,我想将其每次运行记录到不同的文件中。我已经准备好了所需的一切,例如一个变量持有...
问题:如何防止错误日志调用相同的追加方法来停止无限循环,从而导致应用程序停止工作。 分析:由于AppenderClass中的append方法不是线程安全的,所以创建了
我在 Tomcat 上部署了一个简单的 Web 应用程序(sample.war),它默认使用 log4j2.properties 文件进行日志记录配置。现在,我需要从不同的位置创建一个记录器配置...
我希望使用基于扫描 log4j 写入的日志文件的 SCOM 实用程序来发出警报,例如使用 DailyRollingFileAppender 标准附加程序。 然而,SCOM 文档
SplunkHttp Appender 错误:ERROR 处理元素 SplunkHttp 时出错([Appenders:null]):CLASS_NOT_FOUND
从 2021 年 5 月 31 日起,我们突然收到此错误 ERROR 处理元素 SplunkHttp 时出错([Appenders: null]):CLASS_NOT_FOUND 我们正在使用 log4j2 配置文件将日志发送到 Splu...
使用控制台和文件附加器的非常简单的 log4j2 XML 配置文件
我想要一个非常简单的 XML 配置文件,带有控制台和使用 log4j2 的文件附加器。 (Apache 网站提供的信息太多了。)
自定义记录整数值到 java 中的 log4j2 jdbc 附加程序
我正在尝试使用 log4j2 在数据库中记录我的事件。具体来说,我在属性配置文件中使用 log4j2 jdbc 附加程序来实现此目的。 这是我的 log4j2 属性中的附加程序...
我想开始使用 Chainsaw v2。几乎没有关于它的信息。我只找到了这个,但是链接打不开,所以不清楚。 我使用socketAppender: log4j.rootLogger=调试,
类“...TCPNetSyslogConfig”包含同一属性“facility”的多个设置器
我有这样的logback配置: <
如何判断PartitionedTableAppender是否写完?
为了避免在写入完成之前其他线程写入同一个分区而导致事务冲突,如何判断PartitionedTableAppender是否已经完成写入? 例外
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,你拯救了我的一天!
我有两个附加程序,一个用于文件,另一个用于控制台。 我希望 Eclipse 控制台同时显示文件和控制台日志,但同时文件仅显示其自己的日志。 我怎么做? 我在这里...
自定义 OutputStreamAppender 未运行:LOGBACK:没有为 <MYAPPENDER>
我希望在OutputStreamAppender的基础上编写自定义appender。我写了下面的课程 封装测试; 导入java.io.IOException; 导入 java.io.OutputStream; 导入 ch.qos.logback.core.
我使用 log4j 1.2.16 的 RollingFileAppender,它会在日志文件达到一定大小时滚动日志文件。现在我想每天滚动日志文件,并在日志文件达到一定大小时滚动。这样就会有一个...
我是 log4j 日志记录的新手,我有一个场景,我想配置 log4j 以使用特定主体结构的 JSON 模板布局发送 http post 请求。以下是正文格式
为什么我使用 Python API 调用的 tableappender 追加数据失败?
我使用Python API提供的tableAppender上传数据。但是调用代码后没有报错,数据并没有追加到DolphinDB表中。任何提示或解决方案都是
log4j是否有一个appender,只存储日志事件的列表(用于单元测试,以验证没有错误日志被写入)?
我想在我的maven项目中的project base目录下创建log文件,我使用的log4j2框架在srcmianresources文件夹下保留了log4j2.xml文件,以下是文件,请更新其中的问题。
im使用log4j写入具有以下属性文件的文件:log4j.rootLogger = DEBUG,FA #File Appender log4j.appender.FA = org.apache.log4j.FileAppender log4j.appender.FA.File = temp.ppr ...