Php 在运行服务时写入带有日期的日志文件
我用reactphp创建了一个服务,它运行并做一些事情。它作为守护进程启动,因此所有输出都应记录在一个文件中。 此日志文件应命名为'foo-log-file-$(日期“+F”)”。我希望每天都有一个日志文件 问题: 如前所述,脚本作为服务运行,不会停止。因此,脚本的起始调用只执行一次Php 在运行服务时写入带有日期的日志文件,php,linux,bash,logging,reactphp,Php,Linux,Bash,Logging,Reactphp,我用reactphp创建了一个服务,它运行并做一些事情。它作为守护进程启动,因此所有输出都应记录在一个文件中。 此日志文件应命名为'foo-log-file-$(日期“+F”)”。我希望每天都有一个日志文件 问题: 如前所述,脚本作为服务运行,不会停止。因此,脚本的起始调用只执行一次 php my_script.php >> /var/log/bar/log-file--$(date "+%F") 2>&1 因此,从该脚本打印到控制台的所有内容都会保存到该文件中,但该
php my_script.php >> /var/log/bar/log-file--$(date "+%F") 2>&1
因此,从该脚本打印到控制台的所有内容都会保存到该文件中,但该文件仅在调用时使用日期字符串创建,不会使用新日期更新
问题:
不在php脚本中编写日志逻辑就可以解决这个问题吗?我可以用bash处理这个需求吗?FYI
@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;
您可能可以为此运行一个cronjob,例如每天运行。@fedorqui“cronjob”的确切含义是什么,守护进程只启动一次,那么这个cronjob到底应该做什么?嗯,我没有正确理解这个问题。现在我明白了:日志文件名是在启动应用程序时生成的。然后,您希望每天更改此文件。为此,您可能需要使用。在某些情况下,它会自动移动日志,以便您可以在第二天的00点“移动”一个日志。很好!注意:您也可以说
>file
将其清空。