在Python中,我们可以使用以下命令将command line
日志放入文件而不是console
:
python script.py >> mylogfile.txt
我怎样才能使用PHP?我试过了
php script.php >> mylogfile.txt
但它没有用。
仅供参考,它可能会有所帮助,我使用的是Windows 10。
答案 0 :(得分:0)
我首先使用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是用于标识的命令行句柄
STDERR。注意,1是STDOUT的句柄,而0是句柄
STDERR。使用命令行中的>
符号,您可以指示
输出到特定位置。
虽然这看起来不太令人兴奋,但它是一个非常方便的工具 系统管理。一个简单的应用程序,运行一些脚本 cron,将是以下内容:
$ php outwitherrors.php >> transaction.log 2>> errors.log
使用'>>',我告诉终端将新消息附加到现有消息 记录(而不是覆盖它)。正常的操作信息是 现在记录到transaction.log,我可能每月阅读一次,只是 检查一切都没问题。同时,任何需要的错误 更快的响应最终会出现在errors.log中,这可能是其他一些cron工作 根据需要每天(或更频繁地)给我发电子邮件。
UNIX和Windows命令行之间有一个区别, 当谈到管道输出时,你应该知道。在UNIX上, 您可以将STDOUT和STDERR流合并到一个目标, 例如:
$ php outwitherrors.php > everything.log 2>&1
这样做是将STDERR重新路由到STDOUT,这意味着两者都得到了 写入日志文件everything.log。