Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将slf4j与log4j2一起使用_Java_Logging_Log4j_Slf4j_Log4j2 - Fatal编程技术网

Java 将slf4j与log4j2一起使用

Java 将slf4j与log4j2一起使用,java,logging,log4j,slf4j,log4j2,Java,Logging,Log4j,Slf4j,Log4j2,最近我一直在尝试log4j2。现在,我想用slf4j测试它,想知道如果我用log4j2尝试slf4j,log4j2中的所有功能(例如,通过中断器进行异步日志记录)是否都可用。我曾尝试将slf4j-jar文件和log4j2&disruptor-jar文件添加到一个测试项目中(我添加了log4j-slf4j-jar,但不完全确定它是否仅用于log4j或log4j2)。当我使用log4j2时,我可以将语句注销到日志文件中。当我尝试slf4j时,它不起作用(我不确定是我的配置还是slf4j没有设置为与l

最近我一直在尝试log4j2。现在,我想用slf4j测试它,想知道如果我用log4j2尝试slf4j,log4j2中的所有功能(例如,通过中断器进行异步日志记录)是否都可用。我曾尝试将slf4j-jar文件和log4j2&disruptor-jar文件添加到一个测试项目中(我添加了log4j-slf4j-jar,但不完全确定它是否仅用于log4j或log4j2)。当我使用log4j2时,我可以将语句注销到日志文件中。当我尝试slf4j时,它不起作用(我不确定是我的配置还是slf4j没有设置为与log4js中断器日志一起工作?欢迎提供任何建议。我将用更多信息和示例代码更新帖子。

是的,无论你的应用程序使用log4j2 api、slf4j api还是log4j-1.2 api,通过中断器的异步日志记录器都应该工作。请参阅og4j2 FAQ页面中要包含哪些jar。slf4j api需要一个jar,此外还需要log4j-api-2.x、log4j-core-2.x和log4j-slf4j-impl-2.x jar。同样的log4j2.xml配置文件也可以使用

更新:


更新2:

。当出现新日志事件时,log4j2使用的disruptor ringbuffer中的对象是预分配和变异的,还是使用每个日志事件创建的新对象?如果所有记录器都是异步的(使用系统属性AsyncLoggerContextSelector)然后预分配带有RingBufferLogEvents的ringbuffer,随着新日志事件的出现,条目会发生变化。但是,这并不是完全无垃圾的,因为日志事件包含消息对象;如果调用
logger.info(“一些参数化的消息,参数={}”,someObject);
,将创建一个
ParameterizedMessage
对象,用于创建参数的字符串快照。这是防止可变参数对象在调用logger.info和后台线程写入文件之间发生更改所必需的。使用混合异步/同步记录器时,将使用不同的环形缓冲区。在这种情况下,ring缓冲区预先分配了
LogEventWrapper
对象,这些对象可以保存标准的
LogEvent
对象。这里为每次调用
logger.log(…)创建一个标准的
LogEvent
对象
并通过设置
LogEventWrapper
字段将其放入环形缓冲区。因此这里有一个折衷方案:更大的灵活性,但由于更多的对象创建,可能会造成较小的性能损失。在这两种情况下,只要后台线程写入日志事件,就会清除环形缓冲区插槽(因此可以对对象进行GC加密).domo arigato。我在使用log4j2进行测试时注意到了GC活动,因此提出了问题。感谢您回来,当然也感谢您使用log4j2。我正在尝试使用堆外日志进行测试,并与log4j2和logback reactor进行比较,但现在将使用log4j2。我正在使用异步-我通过您提到的标志指定系统中的属性预计起飞时间。