2016-06-22 3 views
1

Serilog를 사용하여 이벤트를 직렬화하고 있는데,이 이벤트는 모든 이벤트에 대한 필수 정보를 포함하는 기본 추상 클래스를 확장하는 다양한 서비스에서 전송할 수 있으며 하위 클래스는 모두 특정 이벤트 정보가 필요했습니다.Serilog 이벤트 직렬화시 기본 클래스 속성을 생략합니다.

문제는 로그에서 하위 클래스 속성 만 저장되고 상위 클래스 속성은 제외된다는 것입니다. 직렬화가 기본 클래스 속성을 직렬화에 포함하도록 강제하는 방법이 있습니까?

기본 클래스를 비 추상화로 변경하고 Destructor.ToMaximumLength를 10000으로 설정했지만 여전히 운이 좋지 않았습니다.

public abstract class AnalyticsEvent 
{ 
    public readonly Guid EventId = Guid.NewGuid(); 
    public readonly DateTimeOffset EventTime = DateTimeOffset.UtcNow; 
    public readonly EventGroups EventGroup; 
    public readonly Guid? TransactionId; 
    public readonly string EventName; 

    public AnalyticsEvent(EventGroups eventGroup, Guid? transactionId, string eventName) 
    { 
     EventGroup = eventGroup; 
     TransactionId = transactionId; 
     EventName = eventName; 
    } 
} 
+0

포함시켜야하는 기본 클래스 속성의 스 니펫을 게시 할 수 있습니까? 공개되었거나 보호되어 있습니까? 감사! –

+0

@NicholasBlumhardt 스 니펫을 추가했습니다. – evilpilaf

답변

2

Serilog의 구조 조정은 속성을 선택하기 만합니다. 기본 클래스의 멤버는 필드입니다. 속성으로 변환하면 예상대로 작동합니다.

관련 문제