Java kafka-log4j-appender 0.9.0.1忽略了错误的可丢弃信息
看起来kafka-log4j-appender 0.9.0.1在向kafka发送消息时忽略了可丢弃的信息。 我正在使用以下配置: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
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提出的新想法,我终于在下一个答案中添加了配置