2012-05-06 9 views
6

Come sappiamo, possiamo usare la classe EventLog per scrivere registri eventi, ma sono confuso su come scrivere il nome della categoria nel mio registro eventi. Thoug fornisce il parametro di categoria, per esempio, uno del tipo di WriteEntry è:Come scrivere la categoria registro eventi

public void WriteEntry(
string message, 
EventLogEntryType type, 
int eventID, 
short category 

)
Ed è solo mostra il numero nel mio registro. Perché il tipo di categoria è breve, non stringa? Come visualizzare il nome della categoria nel Visualizzatore eventi? Grazie! A proposito, non creeremo il CategoryMessageFile personalizzato.

risposta

5

È possibile scrivere una voce del registro eventi con una data categoria, ma è necessario creare una DLL in più nativa con una tabella di stringa di risorsa che è registrato nel registro eventi. Questo complica ulteriormente il tuo deployment. Attualmente hai a che fare durante l'installazione

  1. Per creare nuove fonti di registro eventi hai bisogno di diritti di amministratore ogni volta che si crea una nuova fonte. È quindi consigliabile raccogliere tutte le fonti in modo da poterle installare immediatamente durante l'installazione iniziale.
  2. Creare una dll nativa che contiene una tabella di risorse stringa per ciascun ID di categoria che si desidera fornire.
  3. Registrare la dll di categoria nel Registro di sistema per rendere Windows consapevole di esso.

Ora è possibile utilizzare l'overload per scrivere un messaggio del registro eventi con una determinata categoria.

C'è un ottimo Dr. Jobs Journal article che descrive esattamente il tuo problema.

+0

Sì, ho trovato questo articolo, so che possiamo creare una dll nativa extra, ma non è raccomandata nel nostro sviluppo. Quindi, voglio sapere se posso usare i nomi delle categorie di sistema predefinite? –

+0

Cosa intendi con non raccomandato? È l'unico modo. Se riutilizzi le dll di categoria da Windows, devi comunque registrarle per la tua origine evento. È possibile utilizzare un solo file di categoria per ogni origine evento. Ora stai progettando le origini degli eventi per ogni nuova dll di categoria che desideri utilizzare. Dubito che i nomi descrittivi siano lì come Source1, Source2, Source3 solo per riutilizzare 3 file di categorie differenti che contengono messaggi su cui non hai alcun controllo. –

-1

hai tante sovraccarichi - in grado di soddisfare voi: (perché stai scegliendo quelle complicate :)?)

la categoria è quella di filtrare gli eventi nei log di eventi (che si può fare anche con attribtue fonte)

enter image description here

utilizzare il primo o il secondo.

modificare

EventLog.CreateEventSource("MyWebApplication", "Application") ; 
+0

Sei scrittura, ma la scrittura categoria è un requisito di progettazione nella nostra situazione. –

+1

Questo non risponde alla domanda "Come scrivere una categoria nel registro eventi". – Despertar

+0

@Despertar hai ragione. aggiornato. –