텍스트 파일이나 데이터베이스에 로그인 하시겠습니까?


25

언제 로깅을 위해 데이터베이스를 사용하고 언제 텍스트 파일을 사용해야합니까?
웹 서버와 웹 프레임 워크 (앱에서 내부적으로 사용하는)는 일반적으로 요청과 오류를 기본적으로 텍스트 파일에 기록합니다. 그러나 해당 서버 및 프레임 워크를 중심으로 앱을 개발하는 사람들은 때로는 데이터베이스 (외부 데이터베이스가 아닌 앱의 주요 DB)에 로그인하는 경우가 있습니다.
또한 디버그 로그감사 로그 간에 차이가 있을 수 있습니다.이 사이트의 어딘가에서이 분류를 읽었습니다.



도움이 될 수도 있습니다 stackoverflow.com/questions/3458813/…
Muhammad Raja


민감한 정보를 기록해서는 안되지만 일부 시스템에서는 정보를 요구할 수 있으며 이는 데이터베이스에 기록하기에 좋은 경우입니다. 때때로 개발자는 실수로 민감한 정보를 기록합니다. 이 사고를 막기 위해 많은 응용 프로그램 개발자는 데이터베이스에만 로그인하므로 로그 메시지의 사회 보장 번호와 같은 것은 13 개의 다른 서버에서 일반 텍스트로 텍스트 파일에 저장되지 않습니다.
Greg Burghardt

답변:


16

일반적으로 텍스트 파일에 기록하는 것이 데이터베이스에 기록하는 것보다 훨씬 빠릅니다. 이것이 로깅의 주요 측면입니다.

DB에 로그인하는 이유는 결과를 쿼리하려고하기 때문일 가능성이 높습니다. 특히 로그 항목을 함께 그룹화하는 데 사용할 수있는 컨텍스트 정보를 로그하는 경우 DB에서 특정 로그 정보를 검색하는 것이 더 쉽습니다. 또한 보안이 유지되고 액세스 할 수없는 서버의 로그 파일보다 중앙 DB에 액세스하는 것이 더 쉽습니다.

이상적으로는 파일에 로컬로 로그 한 다음 나중에 필요한 경우 검사를 위해이 데이터를 DB로 마이그레이션하는 것이 가장 좋습니다.

이제 감사는 완전히 다른 짐승입니다. 로깅과 개념적으로 비슷하지만 일반적으로 감사는 디버깅 또는 추적에 사용되는 로그 파일과 달리 로그 파일과 달리 오랜 시간 동안 유지해야합니다. 중요한 정보를 보여주기 위해 감사가 있습니다. 감사 정보가 적고 일반 로깅보다 빈도가 적으므로 성능에 문제가 없습니다. 이러한 이유로이 감사 정보를 중앙 DB에 작성하는 이점이 나타납니다.


1
내가 본 또 다른 배열은 로그를 처음에 로컬로 작성한 다음 일종의 백그라운드 작업으로 DB에 푸시하는 것입니다.
로비 디

@RobbieDee 나는이 아이디어를 좋아한다. 나는 일종의 중복 질문이 있습니다 : 제한된 기간의 로그 파일 (예 : 지난 30 일 만)을 갖는 것이 일반적입니까?하지만 로그가 데이터베이스에 푸시 될 때 (예 : 매주) 모든 로그는 데이터베이스에 저장됩니다 => 로그 파일이 작동합니다 버퍼 전용이며 모든 읽기 작업이 데이터베이스에서 수행됩니까? DB에 쓰기가 지연되므로 성능에 대한 걱정이 없습니다.
Al-un

9

모든 접근 방식에 맞는 크기는 하나도 없으며 복원력을 위해 때로는 여러 가지 접근 방식을 사용하려고합니다. 예를 들어 디버그 로그를 파일에 숨기고 감사 로그를 DB에 저장하려고 할 수 있습니다.

응용 프로그램 빵 부스러기

장점 : 구현하기 쉽고 사용자에게 즉시 표시

단점 : 응용 프로그램이 작동하는 동안에 만 정보가 유지됩니다

텍스트 파일

장점 : 손쉬운 구현

단점 : 파일 잠금이 발생하지 않도록해야합니다. 로그 드라이브에 디스크 공간이 부족하면 어떻게해야합니까?

이벤트 로그

장점 : 손쉬운 구현

단점 : 올바르게 설정하지 않으면 이벤트 로그가 가득 차거나 보존 정책 / 삭제로 인해 오래된 로그가 손실 될 수 있습니다.

데이터 베이스

장점 : 손쉬운 구현

단점 : 더 많은 DB 트래픽. DB 손실 또는 기타 DB 문제를 기록하는 방법은 무엇입니까?

메시징 (MQ)

장점 : 화재와 잊어

단점 : 또 다른 층이 잘못되었습니다. 설정 필요


syslog 데몬 및 SNMP 로그 대상을 포함 할 수도 있습니다.
gbjbaanb

실제로 @gbjbaanb-일부 OS에는 이러한 기능이 내장되어 있습니다. 이는 완전한 목록이 아닙니다. 고 가용성 시스템은 다운 될 때 SMS를 보낼 수도 있습니다.
Robbie Dee

2

감사 로그 는 데이터베이스의 내용을 완전히 정당화하기 위해 감사 목적으로 더 오랜 시간 동안 작업의 완전한 추적 성을 보장해야합니다.

경우에 따라 (예 : 재무 응용 프로그램)이 로그는 보존 (일부 국가에서는 10 년) 또는 변경 불가능과 같은 법적 요구 사항을 준수해야합니다. 이러한 로그는 응용 프로그램 수준에서 DB의 내용을 정당화해야하므로 무단 변경을 방지하기 위해 액세스를 제어 할 수있는 DB에 저장하는 것이 일반적입니다.

모니터링 로그 또는 보안 로그와 같은 다른 로그 는 성능 및 볼륨 제약 조건에 자주 대처해야합니다. 트랜잭션 관리 오버 헤드없이 작성하는 것이 더 빠르기 때문에 오프라인으로 쉽게 보관하고 외부 모니터링 SIEM 도구 와 쉽게 통합 할 수 있기 때문에 일반적으로 파일에 기록됩니다 .

이러한 종류의 로그는 감사 로그의 신뢰성을 입증하는 데 사용될 수 있지만 (예 : 무단 액세스 없음) 일반적으로 보존 제한 조건이 더 짧습니다 (예 : 통신 로그의 법 집행 목적으로 6 개월에서 2 년 사이). 제약이 있다면.


1

디버그 로깅에 db를 사용해야하는 많은 이유 중 하나는 응용 프로그램 또는 웹 서버에 액세스하여 이벤트 뷰어 또는 텍스트 파일을 볼 수없는 경우입니다

감사 로그는 웹 응용 프로그램의 맥락에서 디버그 로그와 다릅니다. 일부 응용 프로그램에서는 쉽게 검색 할 수 있도록 데이터베이스로 이동해야하므로 최종 사용자에게 표시해야 할 수도 있습니다.

DB 도구를 사용하여 필터링하고 쉽게 볼 수 있습니다.


동시성 시스템의 경우 서버 로그 파일에 쓰는 것이 유일한 옵션은 아닙니다. 이러한 로그는 종종 클라이언트 장치에 기록 된 다음 문제 발생시 지원하도록 푸시됩니다. 동시성이 높으면 단일 데이터베이스에 쓰기에 적합하지 않을 수도 있습니다.
로비 디

@RobbieDee 웹 서버와 웹 애플리케이션도 마찬가지입니까? 그것이 OP가 요구하는 것입니다
Muhammad Raja
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.