2012-05-02 4 views
2

우리는 데이터베이스 (mysql)에서 유지 관리하는 몇 가지 사용자 정의 로그를 가지고 있습니다. 우리는 이러한 로그를 사용하여 zend 프레임 워크 응용 프로그램의 최근 오류 및 전자 메일 활동을 추적합니다.사용자 정의 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 framework 응용 프로그램에서 로그를 작성하는 다른 방법은 무엇입니까? 어떤 좋은 Zend_Log이 경우 도움이 될 수 있습니까?

답변

2

NTP를 통해 모든 서버에서 공유되는 "드라이브"에 파일 로거를 사용할 수 있습니다. 표준 유닉스 검색 도구 (grep, awk 등)로 검색 할 수 있습니다.

또 다른 해결책은 Syslog 작성자와 로그 메시지를 수신하는 set up a syslog server을 사용하는 것입니다. syslog 형식을 분석 할 수있는 많은 응용 프로그램이 있습니다.

세 번째 옵션은 MongoDB를 로그 저장소로 사용하는 것입니다. Here is an article은 MongoDB에 쓰는 Log Writer를 구현하는 방법을 설명합니다. MongoDB에는 "비동기 삽입"기능이있어서 로그 엔트리가 데이터베이스에 기록 될 때까지 기다릴 필요가 없습니다.

+1

예, nosql 데이터베이스가 이러한 로그에 적합 할 수 있습니다. 흥미로운 기사! 감사! – aporat