У меня есть проект WCF с открытым API. Я хочу регистрировать запросы и ответы с моего сервера. Я настроил файл web.config, чтобы вести журнал с помощью раздела system.diagnostics в конфигурации. Мне удалось начать вести журнал, однако я хотел бы иметь возможность вести журнал более индивидуально. Я поискал и обнаружил, что могу создать новые классы, реализующие IEndpointBehavior, BehaviorExtensionElement, IDispatchMessageInspector, хотя мне не удалось сделать так, чтобы он регистрировал и не останавливал работу (обработку) вызовов API. Я все еще в полном замешательстве, основываясь на документации Microsoft. Может ли кто-нибудь объяснить, как использовать предоставленные расширения классов для создания журнала, который будет регистрировать запросы и ответы определенных контрактов операций (GetRateLandedCost(RateRequest request) и ShipParcel(routingDeliveryRequest request)), которые имеют определенные значения тела (и RateRequest, и RoutingDeliveryRequest имеют поле "AccountNumber" для фильтрации)?
Вот мои текущие конфигурации для базового журнала, которые я уже реализовал:
Я пытался создать классы, которые расширяют журналирование. Я пытался создать классы, которые расширяют IEndpointBehavior, BehaviorExtensionElement, IDispatchMessageInspector, хотя они делали вызовы к API break. Я просмотрел документацию, хотя я все еще не понимаю, как на самом деле это реализовать и какие изменения необходимо внести в конфигурацию; я пытался добавить расширения поведения конечной точки. Я ожидал, что это создаст на сервере файл, состоящий из журналов с определенной конечной точки, в теле которого будет определенное значение.
<diagnostics wmiProviderEnabled="true">
<messageLogging
logEntireMessage="true"
logMalformedMessages="true"
logMessagesAtServiceLevel="true"
logMessagesAtTransportLevel="false"
maxMessagesToLog="5000"
maxSizeOfMessageToLog="5000000" />
</diagnostics>
<system.diagnostics>
<sources>
<source name="System.ServiceModel.MessageLogging">
<listeners>
<add name="messages"
type="System.Diagnostics.XmlWriterTraceListener"
initializeData="c:\logs\messages.svclog" />
</listeners>
</source>
</sources>
</system.diagnostics>