2009-11-17 12 views
6

Sto scrivendo alcuni registri nel registro degli eventi utilizzando la libreria aziendale MicrosoftImpostazione di una 'categoria' nella registrazione libreria .NET Enterprise (per registro eventi)

sua scrive i log via bene, ma pretende molto sembrano impostare la categoria nel registro eventi. La categoria appare corretta nel corpo del messaggio del registro (se scelgo di impostarlo) ma il visualizzatore eventi non recupera la categoria.

Cosa mi manca?


C# source

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

vuoi dire che vuoi gli eventi registrati nella tua categoria nel visualizzatore eventi? Oppure, una volta visualizzato nel visualizzatore eventi, non è possibile visualizzare la categoria nei dettagli? – curtisk

risposta

5

L'EventLog Categoria è separato e distinto dalle categorie LogEntry. Quindi non penso che tu possa utilizzare le categorie LogEntry da visualizzare nel campo della categoria EventLog.

Dal punto di vista dei dati i tipi sono incompatibili: la categoria EventLog è breve mentre le categorie LogEntry sono una stringa. Sì, nel visualizzatore eventi mostra una stringa, ma questo valore viene cercato tramite un CategoryMessageFile definito nel registro.

Se si desidera poter filtrare nel visualizzatore eventi, è possibile utilizzare la proprietà LogEntry.EventId. Puoi popolare questo usando qualsiasi convenzione tu desideri. per esempio. ID evento univoci per ogni punto di registrazione, un ID evento per livello, un ID evento per classe o qualche altra convenzione.

Come fallback è sempre possibile eseguire una ricerca per la categoria nella descrizione della voce del registro eventi.

1

Questo collegamento (http://drdobbs.com/184405714) contiene ulteriori informazioni su come creare la categoria.

+0

un altro link utile sulla categoria di eventi - http://msdn.microsoft.com/en-us/library/system.diagnostics.eventsourcecreationdata.categoryresourcefile.aspx – Rajes

Problemi correlati