在 运行 服务上写入带有日期的日志文件
Write LogFile with date on running service
我用 reactphp 创建了一个服务,它运行并做一些事情。它作为守护进程启动,因此所有输出都应记录在一个文件中。
此日志文件应命名为 'foo-log-file-$(date "+F")'。我想每天有一个日志文件。
问题:
如前所述,脚本作为服务运行,不会停止。因此,脚本的开始调用只进行一次。
php my_script.php >> /var/log/bar/log-file--$(date "+%F") 2>&1
因此,从该脚本打印到控制台的所有内容都保存到文件中,但该文件仅在调用时使用日期字符串创建,并且不会更新为新日期。
问题:
是否可以不在php脚本中编写日志逻辑来解决这个问题?我可以用 bash 处理这个要求吗?
仅供参考
@fedorqui 的回答是一个很好的方法,我用一个 cronjob 解决了它,它将文件复制到另一个文件并清空其余文件。
您不能使用 move,因为通过 运行 服务,它一直处于打开状态并且您收到错误消息:
cannot move 'foo.log' to 'bar.log': Text file busy
所以我 cp 并清除旧的:
cp foo.log foo.log.$(date +"%F");
cp /dev/null file.log;
我用 reactphp 创建了一个服务,它运行并做一些事情。它作为守护进程启动,因此所有输出都应记录在一个文件中。 此日志文件应命名为 'foo-log-file-$(date "+F")'。我想每天有一个日志文件。
问题:
如前所述,脚本作为服务运行,不会停止。因此,脚本的开始调用只进行一次。
php my_script.php >> /var/log/bar/log-file--$(date "+%F") 2>&1
因此,从该脚本打印到控制台的所有内容都保存到文件中,但该文件仅在调用时使用日期字符串创建,并且不会更新为新日期。
问题:
是否可以不在php脚本中编写日志逻辑来解决这个问题?我可以用 bash 处理这个要求吗?
仅供参考 @fedorqui 的回答是一个很好的方法,我用一个 cronjob 解决了它,它将文件复制到另一个文件并清空其余文件。 您不能使用 move,因为通过 运行 服务,它一直处于打开状态并且您收到错误消息:
cannot move 'foo.log' to 'bar.log': Text file busy
所以我 cp 并清除旧的:
cp foo.log foo.log.$(date +"%F");
cp /dev/null file.log;