2014-11-26 2 views
3

Я использую Enterprise Library SLAB для ведения журнала , но всегда с момента купона дней Я получаю ошибку Использование неопределенного значения ключевого слова 0x1 для события ApplicationStarted. Это компилирует нормально, но бросать ошибки во время выполнения только тогда, когда мы пытаемся включить журнал событий используя следующую строкуИспользование неопределенного значения ключевого слова 0x1 для события ApplicationStarted. в EnterpriseLibrary SLAB

listener.EnableEvents(Logger.Log, EventLevel.LogAlways, Microsoft.Practices.EnterpriseLibrary.SemanticLogging.Keywords.All);

Вот мой EventSource

public static readonly Logger Log = new Logger(); 
     [Event(100, Level = EventLevel.Informational, Keywords = Keywords.Application, Task = Tasks.ApplicationStarted, Opcode = Opcodes.Start, Version = 1)] 
     public void ApplicationStarted() 
     { 
      if (this.IsEnabled(EventLevel.Informational, Keywords.Application)) 
      { 
       this.WriteEvent(100); 
      } 
     } 

     [Event(101, Level = EventLevel.Informational, Keywords = Keywords.Application, Task = Tasks.ApplicationClosed, Opcode = Opcodes.Closed, Version = 1)] 
     public void ApplicationClosed() 
     { 
      if (this.IsEnabled(EventLevel.Informational, Keywords.Application)) 
      { 
       this.WriteEvent(101); 
      } 
     } 

ответ

4

«Каждое ключевое значение представляет собой 64-разрядное целое число, которое рассматривается в качестве битового массива позволяет вам определить до 64 различных ключевых слов.»

«Хотя ключевые слова выглядят как перечисление, это статический класс с константами типа System.Diagnostics.Tracing.EventKeywords. Но так же, как и с флагами, вам нужно убедиться, что вы назначаете полномочия двух в качестве значения для каждой константы «.

«Если вы решили использовать ключевые слова, вы должны определить ключевые слова, которые вы будете использовать в классе вложенная под названием Ключевые слова»

[EventSource(Name = "MyCompany")] 
public class MyCompanyEventSource : EventSource 
{ 
    public class Keywords 
    { 
     public const EventKeywords Page = (EventKeywords)1; 
     public const EventKeywords DataBase = (EventKeywords)2; 
     public const EventKeywords Diagnostic = (EventKeywords)4; 
     public const EventKeywords Perf = (EventKeywords)8; 
    } 
... 
} 

Та же история с заданиями и Opcodes:

«Вы можете использовать Opcodes и Задачи параметров атрибута« Событие »для добавления дополнительной информации в сообщение, которое регистрирует журнал событий. pcodes и задачи определяются с помощью вложенных классов же имени аналогично тому, как вы определили ключевые слова «

Различия: » Opcodes и задачи не должны быть присвоены значениями, полномочие два." И «Если вы решите определить пользовательские коды операций, вы должны назначить целочисленные значения 11 или выше».

Вы можете прочитать полную статью здесь:

https://msdn.microsoft.com/en-us/library/dn440729.aspx

+0

Пожалуйста, не только размещать ссылку ответы, просто поставить основные части в ваш ответ! – Rizier123