将 PHP 命令行日志写入 Python 中的文件

Write the PHP command line log to a file like in Python

在 Python 中,我们可以使用以下命令将 command line 日志而不是 console 添加到文件中:

python script.py >> mylogfile.txt

如何使用 PHP 来实现?我试过了

php script.php >> mylogfile.txt

但是没用。

我用Windows10.

我终于找到了答案。它基于文章 PHP on the Command Line – Part 1 Article

我首先使用 php script.php > mylog.txt 其中 returns 一些日志文本到控制台,所以我认为它没有写入日志,但确实如此。我 想要 php script.php > mylog.txt 2>&1 它将任何日志添加到文件中。

文章说它在 Windows 中不起作用,但我使用 Windows 10 并且它有效。

错误消息和以前一样与正常输出混合在一起。但是通过 通过管道输出脚本的输出,我可以将错误从 正常输出:

php outwitherrors.php 2> errors.log

这一次,您只会看到这些消息:

Opening file foobar.log Job finished

但是,如果您查看 运行 脚本所在的目录,将会创建一个名为 errors.log 的新文件,其中包含错误 信息。数字 2 是用于标识的命令行句柄 standard error. Note that 1 is handle for 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.