Почему это не следующий шаблон от форматера - PullRequest
2 голосов
/ 04 марта 2011

Вот мой конфигурационный файл

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <configSections>
        <section name="loggingConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.LoggingSettings, Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="true" />
    </configSections>
  <loggingConfiguration name="" tracingEnabled="true" defaultCategory="General" >
    <listeners>
      <add name="Event Log Listener" type="Microsoft.Practices.EnterpriseLibrary.Logging.TraceListeners.FormattedEventLogTraceListener, Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
                listenerDataType="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.FormattedEventLogTraceListenerData, Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
                source="Enterprise Library Logging" formatter="Text Formatter"
                log="" machineName="." traceOutputOptions="None" />
      <add name="Rolling Flat File Trace Listener" type="Microsoft.Practices.EnterpriseLibrary.Logging.TraceListeners.RollingFlatFileTraceListener, Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
                listenerDataType="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.RollingFlatFileTraceListenerData, Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
                fileName="F:\MyLogFile.log" footer="" header="" rollInterval="Hour"
                traceOutputOptions="None" formatter="Text Formatter" />
    </listeners>
    <formatters>
      <add type="Microsoft.Practices.EnterpriseLibrary.Logging.Formatters.TextFormatter, Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
                template="{timestamp} {severity} {message} "
                name="Text Formatter" />
    </formatters>
    <categorySources>
      <add switchValue="All" name="General">
        <listeners>
          <add name="Rolling Flat File Trace Listener" />
        </listeners>
      </add>
    </categorySources>
    <specialSources>
      <allEvents switchValue="All" name="All Events" />
      <notProcessed switchValue="All" name="Unprocessed Category" />
      <errors switchValue="All" name="Logging Errors &amp; Warnings">
        <listeners>
          <add name="Rolling Flat File Trace Listener" />
        </listeners>
      </errors>
    </specialSources>
  </loggingConfiguration>
</configuration>

когда я использую код ниже

 Logger.Write("hello world", "", 0, 0, TraceEventType.Information);

Я получаю следующее в файле журнала

3/4/2011 19:40:26 Ошибка Нет явного сопоставления для категорий ''. Запись в журнале была:
Метка времени: 04.03.2011 19:40:26
Сообщение: Hello World
Категория:
Приоритет: 0
EventId: 0
Серьезность: информация
Название:
Машина: MyPC
Домен приложения: ConsoleApplication1.vshost.exe
Идентификатор процесса: 8912
Имя процесса: C: \ ConsoleApplication \ bin \ Debug \ ConsoleApplication.vshost.exe
Название темы:
Win32 ThreadId: 5496
Расширенные свойства:

Что я делаю не так, что он не соответствует шаблону = "{timestamp} {severity} {message}", который я определил в formatter.

1 Ответ

2 голосов
/ 05 марта 2011

Вы определили свою категорию с именем «Общие», но при входе в систему вы используете категорию «».

Logger.Write("hello world", "", 0, 0, TraceEventType.Information);

Таким образом, ваш LogEntry не обрабатывается вашей категорией «Общие», новместо этого specialSource notProcessed.Вот что пытается сказать вам сообщение «Не существует явного сопоставления для категорий».

Чтобы использовать свою категорию, передайте имя методу Write:

Logger.Write("hello world", "General", 0, 0, TraceEventType.Information);

или не указывайте категорию, поскольку «Общие» определены как defaultCategory.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...