log4j:ERROR Failed to rename [D:\kafka_2.12-2.8.0/logs/controller.log] to [D:\kafka_2.12-2.8.0/logs/controller.log.2022-03-15-17]
FIRST前提是zookeeper输出日志、Kafka日志输出目录都已经修改过了,\ 转为 \ \
可以看到路径有问题,修改log4j配置文件(Kafka根目录下的config)
SECOND第二天发现依然有报错,不过controller.log前的路径从 / 变成了 \ 问大佬,要修改${kafka_home}\bin\windows\kafka-run-class.bat中,如下图所示位置 尝试将 /log 改成 \ \ log
第二天查看,报错变成了 再将 \ \ log 改为 \log,观察。
THIRD网传需要修改log4jjar包源码 DailyRollingFileAppender.java 中的
File file = new File(fileName); boolean result = file.renameTo(target); if (result) { LogLog.debug(fileName + " -> " + scheduledFilename); } else { LogLog.error("Failed to rename [" + fileName + "] to [" + scheduledFilename + "]."); }修改为
File file = new File(fileName); boolean result = copy(file, target); if (result) { FileWriter fw = new FileWriter(file); fw.write(""); fw.flush(); fw.close(); LogLog.debug(fileName + " -> " + scheduledFilename); } else { LogLog.error("Failed to rename [" + fileName + "] to [" + scheduledFilename + "]."); }并增加copy方法
/** * Copies src file to dst file. If the dst file does not exist, it is * created.8KB cache * * @param src * @param dst * @throws IOException */ boolean copy(File src, File dst) throws IOException { try { InputStream in = new FileInputStream(src); OutputStream out = new FileOutputStream(dst); // Transfer bytes from in to out byte[] buf = new byte[8192]; int len; while ((len = in.read(buf)) > 0) { out.write(buf, 0, len); } in.close(); out.close(); return true; } catch (FileNotFoundException e) { LogLog.error("源文件不存在,或者目标文件无法被识别." ); return false; } catch (IOException e) { LogLog.error("文件读写错误."); return false; } }修改后打包,上传,再探,再报。原先的jar包要从lib中拿出来!!!
已正常运行两天,无报错。
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。 |
标签: #记一次Kafka #log4j报错 #Windows #log4jERROR #failed #To #rename