java - Log4j2 monitorInterval性能

标签 java performance logging log4j2

在 log4j2 中,monitorInterval 属性可用于 Configuration 元素。我试图阅读此属性对性能的影响,但无法在任何地方找到任何来源。所以,我有多个关于 monitorInterval 属性的问题。

  1. 我想知道,将小值指定为 5(5 秒)和将大值指定为 3000 会对性能产生什么影响(5 分钟)在 Configuration 元素中?

  2. 到底发生了什么?这是否意味着,它会在每次指定的时间间隔过去时自动检测?

  3. 有什么方法可以强制 log4j2 通过配置文件(XML、JSON、YAML、PROPERTIES)立即重新加载配置,而不是通过编程重新配置?

最佳答案

过去,性能影响很小。具体来说,Log4j2 在处理日志事件时会偶尔检查配置文件的 lastModified 时间。聪明的做法是不在每个事件上都这样做,而是仅在自上次检查以来已经过去足够长的时间后才这样做:每 monitorInterval 秒一次。

从 Log4j 2.5 开始就不同了:有一个 watcher 后台线程偶尔会唤醒并检查配置文件的 lastModified 时间。所以现在对日志记录性能没有影响。 (此更改的原因实际上不是性能而是准确性:如果在记录某些内容之前文件不会滚动,这可能比滚动时间晚得多。)参见 https://issues.apache.org/jira/browse/LOG4J2-1202了解详情。

要强制重新加载配置,除了接触配置文件和编程重新配置外,您还可以使用 JMX 接口(interface)。另请查看 Configurator log4j-core 中的类。它有几种导致重新配置的方法。

关于java - Log4j2 monitorInterval性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43940700/

相关文章:

javascript - 删除所有 Flash 对象而不使浏览器重载

java - AOP日志记录: @Aspect is not logging the error in console for log4j default configuration

java - log.info (“dsasdds {}” , var) 和 log.info (“dsasdds ” + var) 之间的区别?

java - 在 Spring Boot 中为 @WebMvcTest 禁用 Spring Security 配置类

java - 使用 AsyncTask 实现启动屏幕后强制关闭

java - 反向打印用户输入

javascript - React Native中VirtualzedList更新慢时返回对象的含义

java - 到达数组中的最后一个索引后返回第一个索引

从集合中选择值以匹配目标值的算法?

c++ - 线程安全日志记录