Java kafka-log4j-appender 0.9.0.1忽略了错误的可丢弃信息

Java kafka-log4j-appender 0.9.0.1忽略了错误的可丢弃信息,java,log4j,apache-kafka,appender,Java,Log4j,Apache Kafka,Appender,看起来kafka-log4j-appender 0.9.0.1在向kafka发送消息时忽略了可丢弃的信息。 我正在使用以下配置: log4j.rootLogger=INFO, stdout log4j.logger.kafka=INFO, stdout log4j.logger.com.doublev=INFO, KAFKA log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=o

看起来kafka-log4j-appender 0.9.0.1在向kafka发送消息时忽略了可丢弃的信息。 我正在使用以下配置:

log4j.rootLogger=INFO, stdout
log4j.logger.kafka=INFO, stdout
log4j.logger.com.doublev=INFO, KAFKA

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n

log4j.appender.KAFKA=org.apache.kafka.log4jappender.KafkaLog4jAppender
log4j.appender.KAFKA.layout=org.apache.log4j.PatternLayout
log4j.appender.KAFKA.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n
log4j.appender.KAFKA.brokerList=localhost:9092
log4j.appender.KAFKA.topic=logs
log4j.appender.KAFKA.syncSend=false
控制台中的输出示例:

ERROR [main] (App.java:21) - / by zero
java.lang.ArithmeticException: / by zero
    at com.doublev.sls.test.App.main(App.java:19)
在卡夫卡方面,它收到:

ERROR [main] (App.java:21) - / by zero

卡夫卡附录有相当广泛的设置。请参见以下内容:

log4j.appender.KAFKA.compressionType=none
log4j.appender.KAFKA.requiredNumAcks=0
log4j.appender.KAFKA.syncSend=true  //did you try false here?
log4j.appender.KAFKA.Serializer=kafka.producer.DefaultStringEncoder
log4j.appender.KAFKA=org.apache.kafka.log4jappender.KafkaLog4jAppender
log4j.appender.KAFKA.layout=org.apache.log4j.EnhancedPatternLayout
log4j.appender.KAFKA.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n%throwable
log4j.appender.KAFKA.brokerList=localhost:9092
log4j.appender.KAFKA.topic=logs
log4j.appender.KAFKA.syncSend=false
也请使用

log4j.appender.KAFKA.layout=org.apache.log4j.EnhancedPatternLayout
根据log4jjava文档

PatternLayout不处理其中包含的可丢弃项 记录事件


卡夫卡附录有相当广泛的设置。请参见以下内容:

log4j.appender.KAFKA.compressionType=none
log4j.appender.KAFKA.requiredNumAcks=0
log4j.appender.KAFKA.syncSend=true  //did you try false here?
log4j.appender.KAFKA.Serializer=kafka.producer.DefaultStringEncoder
log4j.appender.KAFKA=org.apache.kafka.log4jappender.KafkaLog4jAppender
log4j.appender.KAFKA.layout=org.apache.log4j.EnhancedPatternLayout
log4j.appender.KAFKA.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n%throwable
log4j.appender.KAFKA.brokerList=localhost:9092
log4j.appender.KAFKA.topic=logs
log4j.appender.KAFKA.syncSend=false
也请使用

log4j.appender.KAFKA.layout=org.apache.log4j.EnhancedPatternLayout
根据log4jjava文档

PatternLayout不处理其中包含的可丢弃项 记录事件


适用于我的最终配置如下:

log4j.appender.KAFKA.compressionType=none
log4j.appender.KAFKA.requiredNumAcks=0
log4j.appender.KAFKA.syncSend=true  //did you try false here?
log4j.appender.KAFKA.Serializer=kafka.producer.DefaultStringEncoder
log4j.appender.KAFKA=org.apache.kafka.log4jappender.KafkaLog4jAppender
log4j.appender.KAFKA.layout=org.apache.log4j.EnhancedPatternLayout
log4j.appender.KAFKA.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n%throwable
log4j.appender.KAFKA.brokerList=localhost:9092
log4j.appender.KAFKA.topic=logs
log4j.appender.KAFKA.syncSend=false
我还弄明白了为什么为
ConsoleAppender
PatternLayout
打印strack跟踪。可丢弃的信息由
consoleApender
preference-
WriterAppender
处理:

protected
  void subAppend(LoggingEvent event) {
    this.qw.write(this.layout.format(event));

    if(layout.ignoresThrowable()) {
      String[] s = event.getThrowableStrRep();
      if (s != null) {
    int len = s.length;
    for(int i = 0; i < len; i++) {
      this.qw.write(s[i]);
      this.qw.write(Layout.LINE_SEP);
    }
      }
    }

    if(shouldFlush(event)) {
      this.qw.flush();
    }
  }
受保护
无效子附件(记录事件){
this.qw.write(this.layout.format(事件));
if(layout.ignorestrowable()){
字符串[]s=event.getThrowableStrRep();
如果(s!=null){
int len=s.长度;
对于(int i=0;i
适用于我的最终配置如下:

log4j.appender.KAFKA.compressionType=none
log4j.appender.KAFKA.requiredNumAcks=0
log4j.appender.KAFKA.syncSend=true  //did you try false here?
log4j.appender.KAFKA.Serializer=kafka.producer.DefaultStringEncoder
log4j.appender.KAFKA=org.apache.kafka.log4jappender.KafkaLog4jAppender
log4j.appender.KAFKA.layout=org.apache.log4j.EnhancedPatternLayout
log4j.appender.KAFKA.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n%throwable
log4j.appender.KAFKA.brokerList=localhost:9092
log4j.appender.KAFKA.topic=logs
log4j.appender.KAFKA.syncSend=false
我还弄明白了为什么为
ConsoleAppender
PatternLayout
打印strack跟踪。可丢弃的信息由
consoleApender
preference-
WriterAppender
处理:

protected
  void subAppend(LoggingEvent event) {
    this.qw.write(this.layout.format(event));

    if(layout.ignoresThrowable()) {
      String[] s = event.getThrowableStrRep();
      if (s != null) {
    int len = s.length;
    for(int i = 0; i < len; i++) {
      this.qw.write(s[i]);
      this.qw.write(Layout.LINE_SEP);
    }
      }
    }

    if(shouldFlush(event)) {
      this.qw.flush();
    }
  }
受保护
无效子附件(记录事件){
this.qw.write(this.layout.format(事件));
if(layout.ignorestrowable()){
字符串[]s=event.getThrowableStrRep();
如果(s!=null){
int len=s.长度;
对于(int i=0;i
感谢您对EnhancedPatternLayout提出的新想法,我终于在下一个答案中添加了配置。感谢您对EnhancedPatternLayout提出的新想法,我终于在下一个答案中添加了配置