场景:
项目中,有些场景下会把日志记录下来,当去服务器上查看日志的时候会发现有的时候可以找到这个日志,有的时候找不到答应的日志
分析:
代码问题,考虑是否是那个判断出了问题 文件权限问题,是否是文件权限过高,导致 查找:
代码问题
阅读代码,或在方法调用的开始就写测 log 文件权限问题 在服务器上查看文件权限(下面侧重讲) 文件权限导致写 log 写不进去
-
使用 ls -l 查看文件,你会发现拥有者和拥有者组有差异,一个是 www 一个是 root,文件权限给的是拥有者才能读写
root:/logs$ ls -l
-rw-r--r-- 1 www www 273 Mar 8 17:19 log-2021-03-08.log
-rw-r--r-- 1 root root 5294 Mar 18 17:08 log-2021-03-09.log
- 尝试修改文件权限,把权限 改成 777,修改文件权限后在查看 log 是否可以正常写入
root:/logs$ sudo chmod -R 777 log-2021-03-09.log
root:/logs$ ls -l
-rw-r--r-- 1 www www 273 Mar 8 17:19 log-2021-03-09.log
-rwxrwxrwx 1 root root 5294 Mar 18 17:08 log-2021-03-09.log
- 如果可以正常写入可以说明是文件权限导致 log 写不进去
照成权限不同的原因:
- 出现这种问题的原因可能是有多个用户调用当前项目,可以考虑是否有 队列,定时任务
修改:
- 将队列、 定时任务,和 nginx 使用同一个用户跑