문제

필요할 경우 취소할 수 있도록 사람들이 내 앱에서 수행하는 일부 작업에 대한 로그를 보관하고 싶습니다.

이러한 로그를 파일이나 데이터베이스에 저장하는 것이 가장 좋습니까?나는 설정해야 할 또 다른 테이블이라는 점을 제외하면 장단점이 무엇인지 완전히 이해하지 못합니다.

조사하고 배워야 할 세 번째(또는 네 번째 등) 옵션이 있는데 내가 알지 못하는 것이 있습니까?

도움이 되었습니까?

해결책

유연한 레코드 기반 액세스를 위해 데이터베이스를 사용하고 동시 데이터 액세스를 처리하는 데이터베이스 기능을 활용하기를 원할 것입니다.실행 취소해야 할 정보를 추적해야 하는 경우 해당 정보를 구조화된 형식으로 유지하는 것이 좋습니다. 특정 트랜잭션을 실행 취소한 시기와 대상을 나타내는 행을 업데이트할 수 있는 기능도 있습니다.

매우 높은 성능이 문제가 되는 경우 또는 레코드당 구조화되지 않거나 많은 양의 데이터가 있어 데이터베이스에 저장하기 어려울 수 있는 경우에만 파일에 쓰기를 원할 것입니다.애플리케이션에 트랜잭션 수가 매우 많지 않는 한 데이터베이스 속도는 문제가 되지 않을 것입니다.또한 파일 작업을 하는 경우 동시 액세스(읽기/쓰기/잠금)를 매우 조심스럽게 처리해야 하는데 이는 처리하고 싶지 않은 문제일 가능성이 높습니다.

다른 팁

데이터베이스에 저장해야 하는 확실한 이유가 하나 이상 있습니다.즉시 반환되는 MySQL(또는 다른 데이터베이스의 유사한 구문)에서 INSERT DELAYED를 사용할 수 있습니다.이러한 종류의 쿼리를 사용하면 데이터베이스에서 반환 데이터를 얻을 수 없으며 적용이 보장되지 않습니다.

INSERT DELAYED를 사용하면 로깅으로 인해 앱 속도가 크게 느려지지 않습니다.데이터베이스는 언제든지 INSERT를 디스크에 자유롭게 쓸 수 있으므로 여러 개의 삽입을 함께 묶을 수 있습니다.

쿼리가 실제로 실행될 때마다 호출되기 때문에 MySQL에 내장된 타임스탬프 함수(예: CURRENT_TIMESTAMP 또는 CUR_DATE())를 사용할 때 주의해야 합니다.따라서 언제든지 데이터가 데이터베이스가 아닌 프로그래밍 언어로 생성되는지 확인해야 합니다.(이 단락은 MySQL에만 해당될 수 있습니다)

나는 ~의 열렬한 팬이다 log4php.이는 작업 로깅을 위한 표준 인터페이스를 제공합니다.log4j를 기반으로 합니다.라이브러리는 중앙 구성 파일을 로드하므로 로깅을 변경하기 위해 코드를 변경할 필요가 없습니다.또한 파일, syslog, 데이터베이스 등과 같은 여러 로그 대상을 제공합니다.

나는 단순히 유지 관리를 위해 데이터베이스를 사용하겠습니다. 또한 파일을 여러 번 편집하면 일부 내용이 누락될 수 있습니다.

위의 제안을 두 번째로 고려하고 플랫 파일 로그의 파일 잠금이 사용자가 많을 때 문제를 일으킬 수 있다는 점을 추가하겠습니다.

내 이전 스레드를 살펴보세요. DB 애플리케이션에 대한 감사 추적/변경 내역을 남기는 좋은 전략은 무엇입니까? 같은 주제를 다루는 것 같습니다.

다음 기사를 찾았습니다. http://www.devshed.com/c/a/PHP/Logging-With-PHP/

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top