2012-01-25 4 views
0

나는 대규모로 데이터 항목을 처리하고 수정하는 PHP 프로젝트 작업을하고 있습니다. 데이터는 데이터베이스에서 가져 와서 7 가지 유효성 검사 테스트를 거칩니다. 그런 다음 데이터가 정렬되고 데이터베이스에 다시 삽입됩니다. 이 프로세스는 시간과 비용이 많이 들고 오류와 실패를 추적하기가 어렵습니다.PHP 프로그램을위한 로그 파일 작성하기

내 응용 프로그램에 대한 로그 기록기 클래스를 만들고 싶습니다. 텍스트 파일에

  1. 쓰기 로그
  2. 쓰기 로그

데이터베이스에 어떤 방법이 더 효율적이거나 다른 옵션 :

은 기본적으로 두 가지 옵션이 있습니다?

+0

가능한 복제본 [PHP Logging framework?] (http://stackoverflow.com/questions/341154/php-logging-framework) –

+1

나는 중복으로 투표했지만, 실제로 나는 당신에게 포즈를 취하지 않았다는 것을 인정해야합니다. 실제 질문. 더 효과적인 것은 파일 시스템이 데이터베이스보다 효율적인지 아닌지에 따라 다릅니다. 또한 달성하고자하는 것에 따라 어떤 종류의 로깅이 필요한지 등에 따라 달라 지므로 질문을 개선하십시오. – hakre

답변

1

텍스트 파일은 유닉스 머신에서 명령 줄에서 모니터링하기 쉽다 :

$ tail -f /path/thefile.log 

이 당신에게 텍스트 파일의 최신 라인의 끊임없이 업데이트보기를 제공합니다. 당신은 이 그런 식으로 할 수있는을 가지고 있지 않습니다. 대부분의 경우 텍스트 파일로 충분하다고 생각합니다.

데이터베이스는 효율적인 정렬, 필터링 및 관계형 연산 (예 : 하나의 로그 항목을 저장된 다른 종류의 정보와 연결하려는 경우)에 적합합니다. 이를 설정하는 데 시간이 오래 걸리므로이 로깅이 얼마나 영구적으로 필요한지와 필요할 때 얼마나 강력한 지 결정해야합니다. 간단한 검토를 위해라면 텍스트 파일을 사용합니다.

2

에 대해 (자신의 로거를 할 수있는 동안은 잘 테스트 라이브러리 인 당신에게 log4php을 추천하고 그 로그 만 거의 사용되지 않는 경우에만 아파치 fundation 데이터베이스에

1

쓰기 로그의 지원으로 효율적이다 예를 들어 한 번 오류를 검사해야합니다. 오류를 분류하고 필터링하려면 데이터베이스가 필요합니다.

당신은 다음과 같은 테이블을 만들 수 있습니다 : 당신이 정말 쉽게 오류를 검색 할 수

CREATE TABLE `logs` (
    `id` INT AUTO_INCREMENT, 
    `original_id` INT NOT NULL, -- will contain FOREIGN KEY 
    `new_id` INT DEFAULT NULL, -- will contain FOREIGN KEY 
    `validator_id` INT, -- ID of validator which triggered error 
    `type` ENUM('error', 'notice') DEFAULT 'error', 
    `message` VARCHAR(255) DEFAULT '', 
    PRIMARY KEY (`id`) 
) 

.

관련 문제