最近小程序上线后就在做各种优化,由于之前比较赶,像后台的日志管理都没弄,今天准备弄上去,但在测试环境发现Jenkins上构建项目报错了:
查看gradle的构建报告发现报了以下错误:
Caused by: java.lang.IllegalStateException: Logback configuration error detected:
ERROR in ch.qos.logback.core.rolling.RollingFileAppender[ROLLING] – Failed to create parent directories for [/mptest/logs/miniprogram_3ca803ed8134.log]
ERROR in ch.qos.logback.core.rolling.RollingFileAppender[ROLLING] – openFile(/mptest/logs/miniprogram_3ca803ed8134.log,true) call failed. java.io.FileNotFoundException: /mptest/logs/miniprogram_3ca803ed8134.log (No such file or directory)
我就很纳闷这目录明明有的呀:
度娘发现没找到什么有用的信息,后来静下来思考一下突然想起挂载目录问题,因为我的Jenkins也是跑在docker容器中的,所以跟服务器上的Linux环境是隔开的,在Jenkins容器中自然没有这个目录,由于我服务器上的mptest目录挂载到项目容器中,所以最简单的办法就是把这个目录也挂载到jenkins容器中即可。但重新运行后还是报错:
看到报告的重点提示:
Caused by: java.lang.IllegalStateException: Logback configuration error detected:
ERROR in ch.qos.logback.core.rolling.RollingFileAppender[ROLLING] – openFile(/mptest/logs/miniprogram_b9cc66dde8d8.log,true) call failed. java.io.FileNotFoundException: /mptest/logs/miniprogram_b9cc66dde8d8.log (Permission denied)
这是没权限,sudo chmod -R 777 logs加权限后很快就跑起来了。
这里还有一种情况,像我这里的Jenkins也是部署在docker容器中的,这样尽管上面映射了目录并且给权限了但还是报Failed to create parent directories,这可能是不同容器的运行权限不同造成的,比如Jenkins运行命令加了–privileged=true但java镜像运行命令没加–privileged=true也会出现这种情况,这个时候只需要docker rm jenkins -f删掉容器然后重新运行相同权限的容器即可,建议运行镜像的命令不要随便加–privileged=true。
总结:主要问题还是没找到配置文件中指定的路径或者目录没权限。
展开阅读全文
上一篇: 荷塘月色
下一篇:修改Swagger访问URL