【问题标题】:Write the PHP command line log to a file like in Python将 PHP 命令行日志写入 Python 中的文件
【发布时间】:2017-03-24 20:10:52
【问题描述】:

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

python script.py >> mylogfile.txt

我怎样才能使用 PHP 做到这一点?我试过了

php script.php >> mylogfile.txt

但它不起作用。

我使用的是 Windows 10。

【问题讨论】:

  • 什么不起作用?向我们展示您正在运行的错误和脚本 (MVCE)

标签: php logging command-line command command-line-interface


【解决方案1】:

我终于找到了答案。它基于文章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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-06
    • 2023-03-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多