信息日志的 PHP error_log 等价物?
Posted
技术标签:
【中文标题】信息日志的 PHP error_log 等价物?【英文标题】:Equivalent of PHP error_log for info logs? 【发布时间】:2011-12-01 02:30:01 【问题描述】:我使用error_log
进行日志记录,但我意识到必须有一种更惯用的方式来记录应用程序进度。有info_log
吗?或等价物?
【问题讨论】:
【参考方案1】:您可以使用error_log
追加到指定的文件。
error_log($myMessage, 3, 'my/file/path/log.txt');
请注意,您需要具有 3(消息类型)才能附加到给定文件。
您可以在脚本的早期创建一个函数来包装此功能:
function log_message($message)
error_log($message, 3, 'my/file/path/log.txt');
【讨论】:
是的...但是如果不是错误怎么办?这似乎不是惯用的。在 java 中,我们有 log.info("...")、log.error("error msg") 等作为日志记录的常用习语。 是的,其他语言在命名约定等方面比 php 更好。由于 php 实际上没有日志系统(仅用于普通消息),因此您必须创建自己的函数来执行此操作。上面的函数会将消息添加到文件log.txt
,而不是常规的 php 错误日志中。因此,如果有错误,您将使用error_log($message)
,如果没有错误,您将使用log_message($message)
,稍后在 log.txt 中阅读。如果你想变得花哨,你可以在消息日志中添加时间和文件位置。【参考方案2】:
我建议你使用 Monolog: https://github.com/Seldaek/monolog
你可以通过composer添加依赖:
composer require monolog/monolog
然后您可以将一个名为your-app-name
的应用程序的文件流式日志初始化到文件path/to/your.log
中,如下所示:
<?php
use Monolog\Logger;
use Monolog\Handler\StreamHandler;
// create a log channel
$log = new Logger('your-app-name');
$log->pushHandler(new StreamHandler('path/to/your.log', Logger::WARNING));
Monolog 非常强大,您可以实现多种类型的处理程序、格式化程序和处理器。值得一看: https://github.com/Seldaek/monolog/blob/master/doc/02-handlers-formatters-processors.md
最后这样称呼它:
// add records to the log
$log->warning('Foo');
$log->error('Bar');
为了使其具有全局性,我建议您将其添加到您的依赖注入器中(如果有的话),或者使用带有静态调用的单例。
如果您想了解更多详情,请告诉我。
【讨论】:
【参考方案3】:等价于syslog() 和LOG_INFO
常量:
syslog(LOG_INFO, 'Message');
如果你想使用一个文件(这不是一个好主意,因为没有日志轮换并且它可能因为并发而失败),你可以这样做:
file_put_contents($filename, 'INFO Message', FILE_APPEND);
【讨论】:
以上是关于信息日志的 PHP error_log 等价物?的主要内容,如果未能解决你的问题,请参考以下文章