Проблема с Log4net PatternLayout для службы WCF
Я использую Log4Net для службы WCF. Я хочу, чтобы пользовательский параметр "REQUESTID" был передан в log4net.
log4net patternlayout как показано ниже:
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date %-5level %-25aspnet-context{REQUESTID} %message%newline" />
</layout>
Я попробовал ниже:
OperationContext.Current.RequestContext.RequestMessage.Properties.Add("REQUESTID ",10001);
Но это не работает, как ожидалось. Любые идеи были бы хорошы.
2 ответа
Решение
Я понял, что aspnet-context в этом случае не работает.
Поэтому мы должны использовать свойства контекста, как показано ниже:
//log4net parameter for RequestId
log4net.GlobalContext.Properties["RequestId"] = requestId;
изменение web.config:
<conversionPattern value="%date %-5level %-25%property{RequestId} %message%newline" />
Надеюсь, это поможет кому-то, ищущему это.
Твои близкие, но не совсем там. См. Раздел "Свойства контекста" в следующей ссылке, чтобы узнать, как этого добиться.
http://logging.apache.org/log4net/release/manual/contexts.html
Также обратите внимание, что вы захотите сделать это перед вызовом XmlConfigurator.Configure ();
HTH, Эрик