Serilog 로깅 기능에서 매개 변수의 특정 템플릿을 사용하도록 계약을 만들고 싶습니다.Serilog에서 특정 매개 변수 사용 (일반적으로 외부 함수에서)
내 기능으로 캡슐화하지 않고이 작업을 수행 할 수있는 방법이 있습니까 (각 로깅 수준에서 수행해야합니까)?
이벤트 유형, 기능 등을 포함하는 EventLog라는 네임 스페이스가 있습니다. 로깅 할 때 해당 네임 스페이스의 이벤트 유형 및 기능을 사용하도록 시행하고 싶습니다.
보다는 :
void _LogLevel_<T0, T1, T2>(string messageTemplate, T0 propertyValue0, T1 propertyValue1, T2 propertyValue2);
나는이 시행 싶습니다 두 개의 매개 변수가 지정되지 않은 경우 컴파일하지 않을 코드를 가정
void _LogLevel_<EventLog.EventItem, EventLog.Facility, T0, T1>(string messageTemplate, EventLog.EventItem EventType, EventLog.Facility Facility, T0 propertyValue0, T1 propertyValue1, ...);
하고, 먼저 2 개의 객체는 어떤 일반적인 것 T0, T1, ...
이 Serilog에있을 것이므로 직렬화 될 것입니다.
이것은 로깅 기능이 호출 될 때 주어진 매개 변수가 항상 추가된다는 것을 보장하기위한 것입니다.
또 다른 문제점은 Serilog 자체 DSL이기 때문에 문자열 인 messageTemplate
에 {@Event}, {@Facility}
을 추가 할 수 없습니다.
이 지정된 객체를 직렬화 것인가를? (나는 당신이 함수에 전달한 불린 매개 변수라고 가정하고있다). 그리고 의무적으로 만들 수있는 방법이 있습니까? 감사! –
네, 그게 목적입니다. –