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 Log4jContextSelector的设置属性有什么区别吗_Java_Logging_Configuration_Performance Testing_Log4j2 - Fatal编程技术网

Java Log4jContextSelector的设置属性有什么区别吗

Java Log4jContextSelector的设置属性有什么区别吗,java,logging,configuration,performance-testing,log4j2,Java,Logging,Configuration,Performance Testing,Log4j2,我目前正在探索日志框架log4j2。 我配置了log4j2,但没有设置 Log4jContextSelector 我没有在构建路径中添加干扰器jar 后来在详细阅读文档时,我偶然发现了这句话 不要忘记设置系统属性 -DLog4jContextSelector=org.apache.logging.log4j.core.async.AsyncLoggerContextSelector 使所有记录器异步 当我设置这个属性并添加disruptorjar时,我没有看到任何显著的性能改进 我通过在main

我目前正在探索日志框架log4j2。 我配置了log4j2,但没有设置

Log4jContextSelector

我没有在构建路径中添加干扰器jar

后来在详细阅读文档时,我偶然发现了这句话

不要忘记设置系统属性 -DLog4jContextSelector=org.apache.logging.log4j.core.async.AsyncLoggerContextSelector 使所有记录器异步

当我设置这个属性并添加disruptorjar时,我没有看到任何显著的性能改进

我通过在main方法中添加以下行作为第一行来实现这一点

System.setProperty("Log4jContextSelector",
                "org.apache.logging.log4j.core.async.AsyncLoggerContextSelector");
我在测试期间生成的日志总量为47.3MB

这让我觉得天气设置这个属性有什么区别吗? 或者在使用Log4j2时默认为异步

我正在使用以下罐子: 1.log4j-api-2.8.2.jar 2.log4j-core-2.8.2.jar 3.干扰器3.2.0.jar

更新:
在log4j2perf中执行benchmark.jar。它开始打印度量。我无法理解如何使用这些指标将其与同步记录器进行比较。

默认情况下,Log4j2是同步的。您提到的系统属性的效果是所有记录器都变为异步

你所做的似乎是正确的。您提到您看不到性能是如何受到影响的,但不清楚您是如何衡量这一点的

当您的应用程序有多个线程同时记录大量日志时,或者当您需要以突发方式记录许多消息时,使用Disruptor进行异步日志记录的好处变得更加明显。异步日志记录意味着您的应用程序不需要等待日志消息格式化和I/O完成后再执行其他工作


衡量性能并不容易,但如果您的应用程序需要能够扩展,则值得投入时间。该页面有指向方法和技术以及性能测试代码的链接

默认情况下,Log4j2是同步的。您提到的系统属性的效果是所有记录器都变为异步

你所做的似乎是正确的。您提到您看不到性能是如何受到影响的,但不清楚您是如何衡量这一点的

当您的应用程序有多个线程同时记录大量日志时,或者当您需要以突发方式记录许多消息时,使用Disruptor进行异步日志记录的好处变得更加明显。异步日志记录意味着您的应用程序不需要等待日志消息格式化和I/O完成后再执行其他工作


衡量性能并不容易,但如果您的应用程序需要能够扩展,则值得投入时间。该页面有指向方法和技术以及性能测试代码的链接

Log4j
在调用
main方法之前已初始化。
因此,它无法从系统中选择属性
Log4jContextSelector
,默认情况下,它是同步工作的

要验证相同性,请执行以下操作: 删除
disruptor
依赖项,如果您的项目仍在进行中,那么它就不是异步的

如果您通过添加属性 -
DLog4jContextSelector=org.apache.logging.log4j.core.async.AsyncLoggerContextSelector
然后在移除干扰器后,项目将不会启动


如果您使用的是tomcat,则在
catalina.properties
中添加系统属性。并且不要忘记在调用
主方法之前使用
immediateFlush=“false”
Log4j
已初始化。 因此,它无法从系统中选择属性
Log4jContextSelector
,默认情况下,它是同步工作的

要验证相同性,请执行以下操作: 删除
disruptor
依赖项,如果您的项目仍在进行中,那么它就不是异步的

如果您通过添加属性 -
DLog4jContextSelector=org.apache.logging.log4j.core.async.AsyncLoggerContextSelector
然后在移除干扰器后,项目将不会启动

如果您使用的是tomcat,则在
catalina.properties
中添加系统属性。不要忘记使用
immediateFlush=“false”