2010-07-01 6 views
14

Ich kann nicht in das Ereignisprotokoll mit NLog schreiben. Ich konnte in die Konsole und in eine Datei schreiben. Ich habe Ausnahmen in NLog aktiviert und bekomme von NLog kein Feedback.NLog: kann nicht in Ereignisprotokoll schreiben

Hier ist meine 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 der Ereignisanzeige, ich bin auf der Suche "Ereignisanzeige (Lokal)"> "Windows-Protokolle"> "Application". Ich sehe jedoch keine Instanzen von "aaaTest" (meine definierte Quelle) im Protokoll.

+0

Wenn ich meine Anwendung als Applizierhilfe laufen, die Protokolle Nachrichten korrekt im Ereignisprotokoll angezeigt wird. Ich verwende Windows 7. Gibt es keine andere Möglichkeit, in das Ereignisprotokoll zu schreiben, wenn ich meine Anwendung nicht als Administrator ausführe? (Ich stolperte über diesen Artikel, der mir die Idee gab, zu versuchen, als Administrator zu laufen: http://webcache.googleusercontent.com/search?q=cache:8pYpa9wBFTEJ:connect.microsoft.com/VisualStudio/feedback/details/509224/security -exception-trying-to-access-application-Ereignisprotokoll + my.application.log + security_exception & cd = 1 & hl = de & ct = clnk & gl = us & client = firefox-a) – sparks

Antwort

18

Von nlog forum post

Um eine Anwendung auf die EventLog schreiben können muss als Ereignisquelle registriert werden. Wenn Sie VS als Admin ausführen, geschieht dies automatisch. Wenn Sie ein Installationsprogramm erstellen und Ihre Anwendung installieren, wird es registriert.

Um eine App manuell als Ereignisquelle Ich benutze das folgende Skript registrieren:

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

Verwenden Sie anstelle von VBS stattdessen diese Befehlszeile. Viel einfacher. http://stackoverflow.com/questions/446691/how-to-create-windows-eventlog-source-from-command-line/1036133#1036133 "eventcreate/ID 1/L ANWENDUNG/T INFORMATION/SO MYEVENTSOURCE/D "Mein erstes Logbuch" –

+0

Ich habe entdeckt, dass Sie VS nur einmal als Admin ausführen müssen und dabei ein Ereignisprotokoll erstellen müssen. Danach können Sie normal laufen und es funktioniert weiterhin (es sei denn, Sie ändern den 'source' Namen) . – SharpC