我应该在哪里存储自定义php日志?

我应该在哪里存储自定义php日志?,php,zend-framework,zend-db,zend-log,Php,Zend Framework,Zend Db,Zend Log,我们在数据库(mysql)中维护了一些自定义日志。我们使用这些日志来跟踪zend framework应用程序中最近的错误和电子邮件活动 我们最近发现,这些日志对数据库造成了一些压力,因为我们在这些日志选项卡上执行了多次读/写操作。这也会降低应用程序的速度,因为我们需要执行mysql插入,有时这些日志表会被其他SELECT查询锁定 我们使用Zend_Log适配器执行日志写入,例如: $columnMapping = array('url' => 'url', 'userAgent'

我们在数据库(mysql)中维护了一些自定义日志。我们使用这些日志来跟踪zend framework应用程序中最近的错误和电子邮件活动

我们最近发现,这些日志对数据库造成了一些压力,因为我们在这些日志选项卡上执行了多次读/写操作。这也会降低应用程序的速度,因为我们需要执行mysql插入,有时这些日志表会被其他SELECT查询锁定

我们使用
Zend_Log
适配器执行日志写入,例如:

    $columnMapping = array('url' => 'url', 'userAgent' => 'userAgent', 'info' => 'info', 'reffer' => 'reffer', 'userId' => 'userId', 'priority' => 'priority','dateInserted' => 'dateInserted', 'message' => 'message');
    $writer_db = new Zend_Log_Writer_Db($db, 'log', $columnMapping);
我们还有一个定制的cronjob,它每天晚上从日志中清除旧条目,这也会给数据库带来一些压力

我们对这些日志的唯一要求是,它们应该可以从中心位置进行搜索,因为我们有多个服务器编写这些日志


在zend framework应用程序中编写日志有其他选择吗?任何好的
Zend_Log
适配器在这种情况下都会有帮助吗?

您可以使用文件记录器来创建一个“驱动器”,该驱动器通过NTP在所有服务器之间共享。它可以使用标准的unix搜索工具(grep、awk等)进行搜索

另一个解决方案是使用接收日志消息的Syslog编写器和。有许多应用程序可以分析syslog格式


第三种选择是使用MongoDB作为日志的存储工具。这说明了如何实现写入MongoDB的日志编写器。MongoDB具有“异步插入”,因此应用程序不必等到日志条目写入数据库。

是的,nosql数据库可能非常适合这些日志。有趣的文章!谢谢