问题描述
springboot 接入xxljob,在yml中进行配置
xxl:
job:
admin:
addresses: http://172.168.x.xx:port/gsXxlJob/
executor:
appname: projectName-sit
port: 9999
logpath: /data/applogs/xxl-job/jobhandler/projectName/sit
logretentiondays: 30
2023-02-22 14:20:21.488 ERROR 1119 --- [xxl-job, JobThread-76-1677046821479] com.xxl.job.core.log.XxlJobFileAppender : 没有那个文件或目录
java.io.IOException: 没有那个文件或目录
at java.io.UnixFileSystem.createFileExclusively(Native Method)
at java.io.File.createNewFile(File.java:1023)
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 io.renren.modules.miniIO.xxljob.IpWhiteToRedisJob.execute(IpWhiteToRedisJob.java:57)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.xxl.job.core.handler.impl.MethodJobHandler.execute(MethodJobHandler.java:31)
at com.xxl.job.core.thread.JobThread.run(JobThread.java:166)
原因分析
上面报错找不到 “xxl.job.executor.logpath: /data/applogs/xxl-job/jobhandler/projectName/sit”,在服务器根目录下没找到“/data/applogs/xxl-job/jobhandler/projectName/sit”目录
解决方法
- 切换root用户
- 创建目录
mkdir -p /data/applogs/xxl-job/jobhandler/gsFileSystemService/sit
- 再去执行定时任务还是报错(权限问题)
- 修改创建目录的权限(权属)
chown -R 普通用户:普通用户 data/
- 再次执行定时任务,此时程序正常
注意:如果之前有/data目录,且权限正确,不用去手动创建xxljob的日志子目录