xxl-job No such file or directory

543 阅读1分钟
[ERROR] [TID: N/A] [] [xxl-job, JobThread-5-1714351057941] [com.xxl.job.core.log.XxlJobFileAppender] No such file or directory
java.io.IOException: No such file or directory
       at java.base/java.io.UnixFileSystem.createFileExclusively(Native Method)
       at java.base/java.io.File.createNewFile(File.java:1043)
       at com.xxl.job.core.log.XxlJobFileAppender.appendLog(XxlJobFileAppender.java:99)
       at com.xxl.job.core.context.XxlJobHelper.logDetail(XxlJobHelper.java:164)
       at com.xxl.job.core.context.XxlJobHelper.log(XxlJobHelper.java:118)
       at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
       at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
       at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
       at java.base/java.lang.reflect.Method.invoke(Method.java:568)
       at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:107)
       at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:323)
       at org.codehaus.groovy.runtime.callsite.StaticMetaMethodSite.invoke(StaticMetaMethodSite.java:44)
       at org.codehaus.groovy.runtime.callsite.StaticMetaMethodSite.call(StaticMetaMethodSite.java:89)
       at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47)
       at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:125)
       at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:139)
       at com.xxl.job.service.handler.DemoGlueJobHandler.execute(Script_4ad1ee5718c136370942ec1cbfbed8f6.groovy:10)
       at com.xxl.job.core.handler.impl.GlueJobHandler.execute(GlueJobHandler.java:26)
       at com.xxl.job.core.thread.JobThread.run(JobThread.java:166)

在使用Dockerfile时,因为用了非root用户,导致xxl-job无法使用XxlJobHelper.log()打印日志,实际是因为没有日志路径的权限导致的,可以通过参数xxl.job.executor.logpath配置。

解决办法

  1. 确认在xxl-job的配置中,配置了logpath
  2. 调整logpath的路径到有权限的路径下