想要在网络原因或者ip问题导致的连接失败或者超时时,在日志中打印出kafka连接失败的提示信息如何去处理,希望有懂得给一个明确的回答,两天内有效
在spring的配置文件中添加如下代码:
logging:
pattern:
console: "%d - %msg%n"
file: /var/log/kafka.log
level:
com.xxx.xxx: debug
截图如下:
kafka log保存的位置,
kafka安装路径下的config文件夹( kafka\config) , 然后打开server.properties查看 log.dirs
默认位置是 log.dirs=/tmp/kafka-logs,这个路径是kafka安装路径的同一个盘
kafka默认数据会保存7天
为kafka设置ErrorHandler,关键代码如下:
@Bean
public ConcurrentKafkaListenerContainerFactory kafkaListenerContainerFactory() {
ConcurrentKafkaListenerContainerFactory factory = new ConcurrentKafkaListenerContainerFactory();
// 发生异常时的处理,无论发生什么错误,都会打印日志
factory.setCommonErrorHandler(new CommonLoggingErrorHandler());
return factory;
}
也可以自定义错误处理类,按需实现错误时的处理,代码如下:
class PrintLogErrorHandler extends CommonLoggingErrorHandler {
@Override
public void handleOtherException(Exception thrownException, Consumer<?, ?> consumer, MessageListenerContainer container, boolean batchListener) {
// 当发生网络类异常时,打印日志
if(IOException.class.isAssignableFrom(thrownException.getClass()) ||
SocketException.class.isAssignableFrom(thrownException.getClass())) {
System.out.println("kafka发生网络异常");
}
}
}
@Bean
public ConcurrentKafkaListenerContainerFactory kafkaListenerContainerFactory() {
ConcurrentKafkaListenerContainerFactory factory = new ConcurrentKafkaListenerContainerFactory();
// 自定义错误处理,如果网络类异常,则打印日志
factory.setCommonErrorHandler(new PrintLogErrorHandler());
return factory;
}
如果还有任何不清楚的地方,可以随时沟通联系,
请采纳,非常感谢!
https://www.cnblogs.com/hongfeng2019/p/11338528.html
你可以用开源软件datadog监控
https://www.datadoghq.com/blog/monitor-kafka-with-datadog/