2009-11-17 19 views
6

estoy escribiendo algunos registros para el registro de eventos usando la biblioteca de la empresa MicrosoftEstablecimiento de una 'categoría' en el registro de la biblioteca Enterprise .NET (para registro de eventos)

Su escribe registros de distancia bien, pero no se parece a establecer la categoría en el registro de eventos. La categoría aparece bien en el cuerpo del mensaje del registro (si elijo establecerlo) pero el visor de eventos no recoge la categoría.

¿Qué me falta?


fuente C#

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

web.config

<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> 

+0

'log.Categories.Add (" Evento ** s ** ");'? –

+0

¿quiere decir que quiere sus eventos registrados en su propia categoría en el visor de eventos? ¿O una vez que lo ves en el visor de eventos, no puedes ver la categoría en los detalles? – curtisk

Respuesta

5

La Categoría EventLog es separada y distinta de las categorías LogEntry. Por lo tanto, no creo que pueda usar las categorías LogEntry para mostrarlas en el campo de la categoría EventLog.

Desde una perspectiva de los datos de los tipos son incompatibles: la categoría EventLog es un corto mientras que las categorías son LogEntry una cadena. Sí, en el visor de eventos muestra una cadena, pero este valor se busca a través de un CategoryMessageFile definido en el registro.

Si usted quiere ser capaz de hacer algún tipo de filtrado en el visor de eventos, se puede utilizar la propiedad LogEntry.EventId. Puede poblar esto usando cualquier convención que desee. p.ej. Id. de evento únicos para cada punto de registro, un Id. de evento por capa, un Id. de evento por clase o alguna otra convención.

Como alternativa, siempre puede hacer una búsqueda para su categoría dentro de la descripción de la entrada de EventLog.

1

Este enlace (http://drdobbs.com/184405714) contiene más información sobre cómo crear la categoría.

+0

un enlace más útil en la categoría de eventos - http://msdn.microsoft.com/en-us/library/system.diagnostics.eventsourcecreationdata.categoryresourcefile.aspx – Rajes

Cuestiones relacionadas