(偶发) 记录的 log 未体现在 log 文件中

143 阅读1分钟

场景:

项目中,有些场景下会把日志记录下来,当去服务器上查看日志的时候会发现有的时候可以找到这个日志,有的时候找不到答应的日志

分析:

代码问题,考虑是否是那个判断出了问题 文件权限问题,是否是文件权限过高,导致 查找:

代码问题

阅读代码,或在方法调用的开始就写测 log 文件权限问题 在服务器上查看文件权限(下面侧重讲) 文件权限导致写 log 写不进去

  1. 使用 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
  1. 尝试修改文件权限,把权限 改成 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 
  1. 如果可以正常写入可以说明是文件权限导致 log 写不进去

照成权限不同的原因:

  1. 出现这种问题的原因可能是有多个用户调用当前项目,可以考虑是否有 队列,定时任务

修改:

  1. 将队列、 定时任务,和 nginx 使用同一个用户跑