Установка категории в журнале .net корпоративной библиотеки (в журнал событий) - PullRequest
6 голосов
/ 17 ноября 2009

Я записываю некоторые журналы в журнал событий, используя корпоративную библиотеку Microsoft

Он записывает в журнал нормально, но, похоже, не устанавливает категорию в журнале событий. Категория отображается нормально в теле сообщения журнала (если я решу установить это), но средство просмотра не выбирает категорию.

Чего мне не хватает?


c # source

LogEntry log = new LogEntry();
log.Message = "Test";
log.Categories.Add("Event");
Logger.Write(log);

веб-конфигурация

<loggingConfiguration name="Logging Application Block" tracingEnabled="true"
defaultCategory="General" logWarningsWhenNoCategoriesMatch="true">
<listeners>
  <add source="TestLogSource" formatter="Text Formatter" log="TestLog"
    machineName="" listenerDataType="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.FormattedEventLogTraceListenerData, Microsoft.Practices.EnterpriseLibrary.Logging, Version=3.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
    traceOutputOptions="None" type="Microsoft.Practices.EnterpriseLibrary.Logging.TraceListeners.FormattedEventLogTraceListener, Microsoft.Practices.EnterpriseLibrary.Logging, Version=3.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
    name="Formatted EventLog TraceListener" />
</listeners>
<formatters>
  <add template="Timestamp: {timestamp}&#xD;&#xA;Message: {message}&#xD;&#xA;Category: {category}&#xD;&#xA;Severity: {severity}"
    type="Microsoft.Practices.EnterpriseLibrary.Logging.Formatters.TextFormatter, Microsoft.Practices.EnterpriseLibrary.Logging, Version=3.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
    name="Text Formatter" />
</formatters>
<categorySources>
  <add switchValue="All" name="Events">
    <listeners>
      <add name="Formatted EventLog TraceListener" />
    </listeners>
  </add>
  <add switchValue="All" name="General">
    <listeners>
      <add name="Formatted EventLog TraceListener" />
    </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="Formatted EventLog TraceListener" />
    </listeners>
  </errors>
</specialSources>

Ответы [ 2 ]

5 голосов
/ 17 ноября 2009

Категория EventLog отделена и отличается от категорий LogEntry. Поэтому я не думаю, что вы можете использовать категории LogEntry для отображения в поле категории EventLog.

С точки зрения данных типы несовместимы: категория EventLog является короткой, а категории LogEntry - строкой. Да, в средстве просмотра событий отображается строка, но это значение ищется с помощью CategoryMessageFile, определенного в реестре.

Если вы хотите выполнить некоторую фильтрацию в средстве просмотра событий, вы можете использовать свойство LogEntry.EventId. Вы можете заполнить это, используя любое соглашение, которое вы пожелаете. например уникальные идентификаторы событий для каждой точки регистрации, идентификаторы событий для каждого слоя, идентификаторы событий для классов или другие соглашения.

В качестве запасного варианта вы всегда можете выполнить поиск для своей категории в описании записи EventLog.

1 голос
/ 12 июля 2011

Эта ссылка (http://drdobbs.com/184405714) содержит дополнительную информацию о том, как создать категорию.

...