나는 개발중인 서비스의 빌드를 몇 개 만들었지 만 로그 파일 시스템을 발전시키고 있습니다. 나는 이전에 파일을 열고, 데이터를 추가했으며, 로그 파일이 미리 결정된 크기 이상으로 커 졌는지 확인하기 전에 로그 작성을 시작하기 전에 새 로그를 시작했습니다.C#의 FIFO 로그 파일
로그 크기가 100MB인데 삭제하고 새 파일을 시작한다고 가정 해 봅시다. 그러나 역사는 느슨하지만 기능은 있지만 최상의 모델은 아닙니다.
내가하고 싶은 것은 100mb보다 크지 않고 일관되게 유지하고 끝까지 추가 할 수있는 FIFO 모델입니다.
데이터는 오류가 발생하기 쉬운 산업 환경에서 고속이므로 모든 데이터를 메모리에 저장하고 전체 파일을 주기적으로 쓰는 것은 신뢰할 만하지 않습니다. (SSD, 합리적으로 할 수있을만큼 충분히 빠르다.) 대부분, 스피너는 너무나 자주 용납하지 못한다.)
마찬가지로 레코드의 길이는 매우 다양하며 (XML 노드로 형식이 지정되어 있기 때문에이를 쉽게 분석 할 수있다.)
그래서 내가 지금까지 가지고 올 수있는 유일한 가능한 모델은 다음 계산에서 가장 오래된 10메가바이트 슬라이스를 삭제 (10메가바이트 말한다) 덩어리 작은 조각을 유지 새로 만드는 것입니다> = 내가 것 (10)
디스크에 파일을 보관하고 태그 끝으로 작업 할 수 있어야합니다.
합리적인 방법으로 최선의 방법을 제안했거나 합리적인 방법이 없으며 계층화 된 다중 로그 접근 방식이 최선의 선택이 될 수 있습니까?
기존 로깅 프레임 워크 중 하나에 잘못된 점이 있습니까? –
우리가 사용하는 형식은 상당히 광범위한 소비자 집단을 가지고 있습니다. 로그 파일 형식을 변경하는 것은 변경 사항을 조정하기 위해 약 30 개의 다른 구성 요소를 다시 작성하지 않고도 합당한 옵션이 아닙니다. 1 층에서 시작할 수있는 능력이 있다면 휠을 재발 명하기로 선택하지 않았을 것입니다. 불행히도이 열차는 새로운 휠이 필요합니다 ... – Sabre
귀하의 상황에 Log4Net을 사용하는 것이 좋습니다. 광범위한 사용자 정의 옵션이 있습니다. 파일을 쓸 위치를 알 수 있고 로그 된 항목의 형식을 지정하는 방법을 정확하게 지정할 수 있으므로 기본적으로 로그 파일에 기록 할 항목을 지정할 수 있습니다. 즉, 사용중인 모든 로그 파일 형식에 쉽게 적응할 수 있어야합니다. – rushinge