【问题标题】:Where should I store custom php logs?我应该在哪里存储自定义 php 日志?
【发布时间】:2012-05-02 13:19:42
【问题描述】:

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

我们最近发现这些日志会给数据库带来一些压力,因为我们在这些日志选项卡上执行了多次读/写操作。这也会降低应用程序的速度,因为我们需要执行 mysql INSERT,有时这些日志表会被其他 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 框架应用程序中写入日志的任何替代方法?有什么好的Zend_Log 适配器可以在这种情况下提供帮助吗?

【问题讨论】:

    标签: php zend-framework zend-db zend-log


    【解决方案1】:

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

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

    第三种选择是使用 MongoDB 作为日志的存储工具。 Here is an article 解释了如何实现写入 MongoDB 的 Log Writer。 MongoDB 具有“异步插入”功能,因此您的应用程序不必等到日志条目写入数据库。

    【讨论】:

    • 是的,nosql 数据库可能非常适合这些日志。有趣的文章!谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-28
    • 1970-01-01
    • 2011-07-12
    • 1970-01-01
    • 1970-01-01
    • 2023-04-07
    • 2012-06-14
    相关资源
    最近更新 更多