문제

중간 비즈니스를위한 인트라넷 시스템을 설계하고 있습니다. 모든 모듈에 대한 단일 로그 테이블을 유지하거나 별도로 만들어야합니까?

감사 로그는 모든 관리자/직원 활동 (생성, 업데이트, 개체 삭제)을 유지하며 모든 종류의 모듈에 대해 로그 구조가 보편적입니다.

또한 로그 레코드를 기반으로 보고서를 가져 오면 좋은 생각입니까? 내 로그 테이블은 객체 유형과 객체 ID를 유지하므로 모든 객체에 대한 데이터와 이벤트, 객체 이름 및 객체 ID에 따라 언제든지 데이터를 가져올 수 있습니다.

그러한 경우에보고하기위한 가장 좋은 방법은 무엇입니까?

도움이 되었습니까?

해결책

글쎄, 당신이 당신의 통나무를 검토하려고 할 때, 당신은 오히려 당신이 할 수있는 한 곳에서 모든 것을 보거나 여러 곳을 점검 해야하는 곳을 봅니다.

단일 테이블을 사용하면 관련이 없거나 사용자가 볼 권한이없는 항목을 필터링하는 것은 사소한 일입니다. 여러 개별 로그를 단일의 포괄적 인 관점으로 결합하는 것은 약간 까다 롭고 대부분의 디자인 하에서 새로운 로그 테이블이 추가 될 때마다 결합하는 코드를 다시 방문해야합니다.

나는 단일 로그가 바람직하다고 말한다. 여러 분리 된 로그가 적절한 위치에 대해 생각할 수있는 유일한 상황은 보안 문제가 다른 가시성을 가진 로그 항목을 물리적으로 분리해야 할 정도로 강력한 경우입니다. 별도의 테이블이 아닌 로그 서버.

다른 팁

보다 log4php. log4J 로그 계층 구조 및 레벨을 도입하여 대부분의 로깅 문제를 해결했습니다. log4php가 얼마나 좋은지는 모르겠지만 스타터 여야합니다.

나는 하나의 테이블을 말하고 싶다.

예를 들어 모든 모듈에서 사용자 활동을 찾을 수 있습니다 (올바르게 이해하는 경우). 하나의 테이블에 적합합니다.

로그 테이블을보고해도 괜찮을 것입니다. 로깅 테이블에 경합을 줄이고로드하기 위해 별도의 보고서 데이터베이스에 오프로드합니다.

마지막으로 객체 이름과 명시 적으로 유형을 저장합니다 (데이터베이스 개체). 삭제하고 만들면 ID가 변경됩니다. 또는 예를 들어 테이블이보기가 될 수 있으므로 유형과 ObjectId가 모두 변경됩니다.

우리는 단일 테이블을 사용하며 특히 성능에서 최상의 솔루션으로 입증되었습니다. 특히 큰 데이터 세트가 있습니다. 상용 솔루션에 관심이 있으시면 시도하십시오 이것.

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