gpt4 book ai didi

java - 设置 Log4jContextSelector 的属性有什么不同吗

转载 作者:行者123 更新时间:2023-12-02 02:49:27 29 4
gpt4 key购买 nike

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

的属性

Log4jContextSelector

我没有在构建路径中添加 Disruptor jar。

后来详细阅读文档,我发现了这样的说法。

Don't forget to set system property -DLog4jContextSelector=org.apache.logging.log4j.core.async.AsyncLoggerContextSelector to make all loggers asynchronous

当我设置此属性并添加 Disruptor jar 时,我没有看到任何显着的性能改进。

我通过添加以下行作为 main 方法中的第一行来做到这一点。

System.setProperty("Log4jContextSelector",
"org.apache.logging.log4j.core.async.AsyncLoggerContextSelector");

我在此测试期间生成的日志总量为 47.3 MB

这让我觉得这个属性的天气设置有什么不同吗?或者使用Log4j2时默认是异步的。

我正在使用以下 jar :1.log4j-api-2.8.2.jar2.log4j-core-2.8.2.jar3.disruptor 3.2.0.jar

更新:执行 log4j2-perf 中的 benchmark.jar。它开始打印指标。我无法理解如何使用指标将其与同步记录器进行比较。

最佳答案

Log4j2 默认是同步的。您提到的系统属性具有使所有记录器变为异步的效果。

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

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

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

关于java - 设置 Log4jContextSelector 的属性有什么不同吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44071960/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com