2012-05-02 3 views
2

У нас есть несколько настраиваемых журналов, которые мы поддерживаем в базе данных (mysql). Мы используем эти журналы для отслеживания последних ошибок и активности электронной почты в нашем приложении zend framework.Где я могу хранить собственные журналы php?

Недавно мы узнали, что эти журналы создают некоторое усилие в базе данных, поскольку мы выполняем несколько операций чтения/записи на этих вкладках журнала. Это также замедляет работу приложения, так как нам нужно выполнить 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 адаптеры, которые могут помочь в этом случае?

ответ

2

Вы можете использовать регистратор файлов на «диске», который используется всеми серверами через NTP. Он доступен для поиска со стандартными инструментами поиска unix (grep, awk и т. Д.).

Другим решением может быть использование записи Syslog и set up a syslog server, которая принимает сообщения журнала. Существует много приложений, которые могут анализировать формат syslog.

Третий вариант заключается в использовании MongoDB в качестве хранилища для ваших журналов. Here is an article, в котором объясняется, как реализовать Log Writer, который записывает в MongoDB. MongoDB имеет «асинхронные вставки», поэтому вашему приложению не нужно ждать, пока запись в журнал не будет записана в базу данных.

+1

Да, база данных nosql может быть идеальной для этих журналов. интересная статья! благодаря! – aporat

Смежные вопросы