我终于找到了答案。它基于文章PHP on the Command Line – Part 1 Article
我首先使用了php script.php > mylog.txt,它将一些日志文本返回到控制台,所以我认为它没有写入日志,但确实如此。我想要 php script.php > mylog.txt 2>&1 会将任何日志添加到文件中。
文章说它在 Windows 中不起作用,但我使用 Windows 10 并且它可以工作。
错误消息与以前一样与正常输出混合在一起。但是通过
通过管道输出脚本的输出,我可以将错误从
正常输出:
php outwitherrors.php 2> errors.log
这一次,您只会看到以下消息:
打开文件 foobar.log 作业完成
但是,如果您查看运行脚本的目录,则会创建一个名为 errors.log 的新文件,其中包含错误
信息。数字 2 是用于识别的命令行句柄
standard error。请注意,1 是standard output 的句柄,而 0 是标准错误的句柄。使用命令行中的> 符号,您可以将输出定向到特定位置。
虽然这看起来不是很令人兴奋,但它是一个非常方便的工具
系统管理。一个简单的应用程序,运行一些脚本
cron,将如下:
php outwitherrors.php >> transaction.log 2>> errors.log
使用“>>”,我告诉终端将新消息附加到现有的
记录(而不是覆盖它)。正常的操作消息是
现在记录到文件 transaction.log,我可能会每月仔细阅读一次,只是为了检查一切是否正常。同时,任何需要更快响应的错误都会出现在文件 errors.log 中,其他一些 cron 作业可能会根据需要每天(或更频繁地)向我发送电子邮件。
Unix 和 Windows 命令行之间有一个区别,
当涉及到管道输出时,您应该注意这一点。在 Unix 上,
您可以将标准输出和标准错误流合并到一个目标,
例如:
php outwitherrors.php > everything.log 2>&1
它将标准错误重新路由到标准输出,这意味着两者都得到
写入日志文件everything.log。