Enterprise Library 6 LogCallHandler выдает исключение "LogWriter не был установлен для статического класса Logger"

Ребята

Я пытаюсь использовать LogCallHandler в перехват, как это:

<interception>
        <policy name="policyLogCallHandler">
          <matchingRule name="LogsMachingRule" type="NamespaceMatchingRule">
            <constructor>
              <param name="namespaceName" value="NetTcpContracts" />
            </constructor>
          </matchingRule>
          <callHandler type="Microsoft.Practices.EnterpriseLibrary.Logging.PolicyInjection.LogCallHandler, Microsoft.Practices.EnterpriseLibrary.PolicyInjection, Version=6.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" name="callHandlerLog">
            <constructor>
              <param name="eventId" value="9002"/>
              <param name="logBeforeCall" value="true"/>
              <param name="logAfterCall" value="true"/>
              <param name="beforeMessage" value="--- begin"/>
              <param name="afterMessage" value="--- end"/>
              <param name="includeParameters" value="true"/>
              <param name="includeCallStack" value="true"/>
              <param name="includeCallTime" value="true"/>
              <param name="priority" value="1"/>
              <param name="order" value="1"/>
            </constructor>            
          </callHandler>
        </policy>        
      </interception>

Эта конфигурация вызывает исключение: "LogWriter не был установлен для статического класса Logger. Установите его, вызывая метод Logger. SetLogWriter".

Я нашел решения для этой проблемы с помощью конфигурации времени выполнения:

IConfigurationSource configurationSource = ConfigurationSourceFactory.Create();
LogWriterFactory logWriterFactory = new LogWriterFactory(configurationSource);
Logger.SetLogWriter(logWriterFactory.Create());
LogEntry entry = new LogEntry();
entry.Message = "I am logging";
Logger.Write(entry)

Но я использую конфигурацию через конфигурационный файл. Как воспроизвести это поведение в конфигурационном файле?

Tks!

2 ответа

Поведение начальной загрузки Enterprise Library изменилось в Версии 6. Влияние статического фасада Logger заключается в том, что вам необходимо установить внутренний LogWriter (например, при запуске приложения): для получения дополнительной информации см. https://entlib.codeplex.com/discussions/442089

Спасибо

Сегодня я столкнулся с той же ошибкой, я просто удалил последнюю версию блока ведения журнала EL и установил ее версию 5.0.505.1 с помощью диспетчера пакетов nuget, и это сработало.

Другие вопросы по тегам