2016-09-12 4 views
1

나는 푸른 큐 저장 장치에 기록 정의 싱크를 가지고 있고, 많은 인스턴스를 destructuring 때 특히, 우리는 푸른이 대기중인 메시지 (Base64로 인코딩 된 메시지에 대한 64킬로바이트 또는 48킬로바이트)에있는 메시지의 크기 제한에 도달하는 몇 가지 이벤트에 대해 . 대기열에 메시지를 배치 할 때 예외가 발생합니다. 나는 예외를 피하고 메시지를 잘리는 필요가있다.Serilog는 logEvent의 전체 크기를 제한하는 방법이 있습니까?

합니까 Serilog는 LogEvent의 전체 크기를 제한 할 수 있도록하는 방법으로를 구축, 또는 우리 자신 리미터 코드해야합니까? 다른 표현은 서로 다른 크기 요구 사항을 가지고 있기 때문에

답변

0

이 싱크 수준에서 구현 될 필요가있다. https://github.com/serilog/serilog-sinks-seq/blob/dev/src/Serilog.Sinks.Seq/Sinks/Seq/SeqSink.cs#L147

Serilog에도 Destructure.ToMaximumDepth(n)이 있지만 크기가 제한되어 있습니다. 그러나이 컨트롤은 사용자가 원하는 종류의 컨트롤을 제공하기에 충분하지 않습니다.

+0

제안 된대로 싱크대에서 맞춤 설정을 구현했습니다. 제대로 작동했습니다. 직렬화 유형 (제 경우는 JSON)에 따라 다르므로이 접근 방식은 매우 구체적인 최적화가 필요하며, 직렬화하는 객체의 우선 순위가 지정된 일부 목록을 제한 내에 맞추는 알고리즘을 사용해야합니다 . (즉, JSON 스트림을자를 수 없습니다). 필자의 경우 메시지 내용을 줄이기 전에 먼저 크기 순서로 속성을 줄였습니다. –

+0

쿨! 당신이 그것을 풀어 준 것을 기쁘게 들었습니다. –

관련 문제