2010-07-01 26 views
14

Non riesco a scrivere nel registro eventi con NLog. Sono stato in grado di scrivere sulla console e su un file. Ho attivato eccezioni in NLog e non sto ricevendo feedback da NLog.NLog: impossibile scrivere nel registro eventi

Ecco il mio NLog.config:

<?xml version="1.0" encoding="utf-8" ?> 
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     throwExceptions="true"> 
    <targets> 
     <target name="console" xsi:type="Console" layout="${message}" /> 
     <target xsi:type="EventLog" name="eventlog" layout="${message}" log="Application" source="aaaTest"/> 
     <target xsi:type="File" fileName="log.txt" name="file"/> 
    </targets> 

    <rules> 
     <logger name="*" minlevel="Debug" writeTo="eventlog,console,file" /> 
    </rules> 
</nlog> 

In Visualizzatore eventi, sto guardando "Visualizzatore eventi (locale)"> "Registri di Windows"> "Applicazione". Tuttavia, non vedo istanze di "aaaTest" (la mia origine definita) nel registro.

+0

Se corro la mia domanda come amministrare, i messaggi di log verranno visualizzati correttamente nel registro eventi. Sto usando Windows 7. Non c'è altro modo di scrivere nel registro degli eventi se non eseguo la mia applicazione come amministratore? (Mi sono imbattuto in questo articolo che mi ha dato l'idea di provare ad eseguire come amministratore: http://webcache.googleusercontent.com/search?q=cache:8pYpa9wBFTEJ:connect.microsoft.com/VisualStudio/feedback/details/509224/security -exception-trying-to-access-application-event-log + my.application.log + securityexception & cd = 1 & hl = it & ct = clnk & gl = us & client = firefox-a) – sparks

risposta

18

Da nlog forum post

Per essere in grado di scrivere nel EventLog un'applicazione deve essere registrato come fonte di evento. Se esegui VS come amministratore, ciò avviene automaticamente. Se si crea un programma di installazione e si installa l'applicazione, viene registrato.

Per registrare un app manualmente come fonte di eventi Io uso il seguente script:

Set Args = WScript.Arguments 
If Args.Count < 1 then 
    WScript.Echo "USAGE: CreateEventSource.vbs <EventSourceName>" 
    WScript.Quit 
End If 
EventSourceName = Args(0) 

Set WshShell = WScript.CreateObject("WScript.Shell") 

'Create event source 
KeyName = "HKLM\SYSTEM\CurrentControlSet\Services\Eventlog\Application\" & EventSourceName & "\EventMessageFile" 
'Change path to .NET Framework version used 
WshShell.RegWrite KeyName,"%windir%\Microsoft.NET\Framework64\v2.0.50727\EventLogMessages.dll", "REG_EXPAND_SZ" 
+1

Invece di usare VBS, usare invece questa riga di comando. Molto più facile. http://stackoverflow.com/questions/446691/how-to-create-windows-eventlog-source-from-command-line/1036133#1036133 "eventcreate/ID 1/L APPLICAZIONE/T INFORMAZIONI/SO MYEVENTSOURCE/D "My first log" –

+0

Ho scoperto che devi solo eseguire VS come admin una volta e creare un registro eventi mentre lo fai, dopodiché puoi eseguire normalmente e funzionerà (a meno che non cambi il nome di 'source') . – SharpC

Problemi correlati