Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/349.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 log4j属性BurstFilter配置_Java_Logging_Apache Kafka_Log4j - Fatal编程技术网

Java log4j属性BurstFilter配置

Java log4j属性BurstFilter配置,java,logging,apache-kafka,log4j,Java,Logging,Apache Kafka,Log4j,我正在尝试使用log4j.properties格式为一个特定的Appender配置BurstFilter。log4j的版本是1,不幸的是,apachekafka还不支持log4j2 我无法找到internet上burstfilter的任何.properties格式示例 这是我配置的第一部分。我想在其中添加BurstFilter。此配置运行良好 log4j.rootLogger=INFO, graylog2 log4j.logger.org.reflections=ERROR log4j.app

我正在尝试使用
log4j.properties
格式为一个特定的Appender配置BurstFilter。log4j的版本是1,不幸的是,apachekafka还不支持log4j2

我无法找到internet上burstfilter的任何
.properties
格式示例

这是我配置的第一部分。我想在其中添加BurstFilter。此配置运行良好

log4j.rootLogger=INFO, graylog2
log4j.logger.org.reflections=ERROR

log4j.appender.graylog2=org.graylog2.log.GelfAppender
log4j.appender.graylog2.graylogHost=1.1.1.1
log4j.appender.graylog2.graylogPort=12201
log4j.appender.graylog2.originHost=my-hostname
log4j.appender.graylog2.facility=gelf-java
log4j.appender.graylog2.layout=org.apache.log4j.PatternLayout
log4j.appender.graylog2.layout.ConversionPattern=%d{ISO8601} %-5p  %X{dbz.connectorType}|%X{dbz.connectorName}|%X{dbz.connectorContext}  %m   [%c]%n
log4j.appender.graylog2.extractStacktrace=true
log4j.appender.graylog2.addExtendedInformation=true
log4j.appender.graylog2.additionalFields={'hostname': 'my-hostname'}
我想补充的是:

log4j.appender.graylog2.filter=org.apache.logging.log4j.core.filter.BurstFilter
log4j.appender.graylog2.filter.level=INFO
log4j.appender.graylog2.filter.rate=16
log4j.appender.graylog2.filter.maxBurst=100
但是,当我使用一些属性转换为XML时,如图所示,我无法获得所需的结果:


我还没有真正尝试在我的Java服务器上使用这种配置,我希望避免使用试错法。感谢您的帮助。

嗯,您的第一个属性文件示例是针对Log4j 1的,而不是针对Log4j 2的。如果它正在工作,则表示您仍在使用Log4j 1或处于兼容模式。既然你没有提到,我怀疑情况是否如此。如果您真的在使用log4j1而不想使用log4j2,那么您必须自己重新实现log4j1的BurstFilter。Log4j 1于2015年8月结束使用,有两个针对它的安全漏洞报告将永远无法修复,Java 9+中有一个与检测JDK版本有关的bug,也永远无法修复

如果您确实想使用Log4j 2和BurstFilter,则继续读取,否则停止此处

您希望使用属性而不是XML、JSON或YAML有什么原因吗?虽然我添加了对log4j2的属性支持,但我真的不喜欢它。Log4j的配置实际上是一个层次结构,很容易用XML、JSON或YAML表示。用属性模拟层次结构感觉很麻烦

翻译时,最简单的方法是查看XML并认识到每个属性和元素都必须表示为子属性。因此,在下面,您将看到突发筛选器的属性都必须显示在appender.StdOut.filter.burst下,以便可以使用名为StdOut的appender和属性都分组在“突发元素”下的BurstFilter来标识该属性

相比之下,这方面的XML是

<Console name="StdOut" target="SYSTEM_OUT">
  <PatternLayout pattern="%d [%t] %-5level: %msg%n%throwable"/>
  <BurstFilter level="INFO" rate="16" maxBurst="100" onMatch="DENY" onMisMatch="NEUTRAL"/>
</Console>


我还可以将它与JSON和YAML进行比较,但希望您能理解这一点。属性格式很长,而且更难理解。综上所述,如果您的应用程序中没有XML、JSON或YAML库,那么使用属性将始终有效。

感谢您的努力。我去掉了标签。也许我不太清楚。我并没有真正开发任何东西,而是使用开源Java应用程序。应用程序是Kafka,这里是默认的
log4j.properties
文件,我使用的是在这里找到的已构建包:
http://mirror.linux-ia64.org/apache/kafka/2.7.0/
我看了一下里面,我可以看到
libs/log4j-1.2.17.jar
作为软件包的一部分,所以看起来您对版本的看法是正确的。我很乐意使用log4j2,但有些事情告诉我,它很简单,只需将
libs/log4j-1.2.17.jar
替换为
libs/log4j-2.x.x.jar
,因为我不是Java专家,所以我正在寻找用我已有的配置所需的方法。-似乎它处于某种预览阶段。像Kafka这样一个广为人知、使用广泛的开源工具竟然使用了如此过时的东西,这真让我感到惊讶。请参阅和。
<Console name="StdOut" target="SYSTEM_OUT">
  <PatternLayout pattern="%d [%t] %-5level: %msg%n%throwable"/>
  <BurstFilter level="INFO" rate="16" maxBurst="100" onMatch="DENY" onMisMatch="NEUTRAL"/>
</Console>