log4net mit EventLogAppender nicht melden
Passiert nichts mit der folgenden Konfiguration.
App.config
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
</configSections>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
<log4net>
<appender name="EventLogAppender" type="log4net.Appender.EventLogAppender" >
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
</layout>
</appender>
</log4net>
</configuration>
Form1.cs (Beispiel)
public partial class Form1 : Form
{
private static readonly ILog log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
public Form1()
{
InitializeComponent();
log.Fatal("Test!");
}
}
Welche version von studio?
Visual Studio 2012 + Windows 8.
Visual Studio 2012 + Windows 8.
InformationsquelleAutor timmkrause | 2013-02-26
Du musst angemeldet sein, um einen Kommentar abzugeben.
Fehlt der root-Konfiguration, so dass Sie etwas brauchen, wie
Beachten Sie auch, dass, wenn ein Programm aufgerufen wird app.exe dann benötigen Sie eine eventlog-Quelle genannt app.exe. Wenn diese nicht vorhanden ist, dann Log4net wird versucht Sie anzulegen, aber das erfordert Admin-Rechte, so müssen Sie möglicherweise führen Sie das Programm als admin mindestens einmal, um dieses Ereignis Quelle. Um dies zu vermeiden, kann die Ereignisquelle normalerweise erstellt werden als Teil der installation, die ja schon als admin ausgeführt.
Hast du irgendwelche Fehlermeldungen im Ausgabefenster von Visual Studio? Der debug="true" - Abschnitt der config oben sollte Ihnen Informationen darüber, was log4net ist zu tun und sollte auch Fehlermeldungen, wenn es fehlschlägt. (Sie werden wahrscheinlich wollen, deaktivieren Sie den debug-Modus, wenn Sie Ihre logging-arbeiten)
"log4net:FEHLER [EventLogAppender] ErrorCode: GenericFailure. Fing eine SecurityException versuchen, Zugriff auf die EventLog. Wahrscheinlich die Quelle Log4NetEventViewer.vshost.exe nicht vorhanden und müssen erstellt werden, die von einem lokalen administrator." - Ich fing die .exe-Datei als admin zu erstellen, die Quelle aber nicht die VS oder die vshost edition. Ausgeführt wird die .vshost.exe als admin war auch nicht genug, da fing es ein .exe mit "-clr2" suffix oder so etwas. Laufen VS als admin einmal gelöst. DANKE!!!
Um zu vermeiden, die eventlog-Quelle ändern Sie können die ApplicationName-Eigenschaft in deiner config-Datei.
Die Spitze macht Ihr die Antwort noch genial! 🙂
InformationsquelleAutor sgmoore
Sollten Sie hinzufügen:
in der AssemblyInfo.cs des Projekts. Dieser initialisiert die logger. Und setzen Sie die log4net in eine Datei namens log4net.config.
Sorry, du hattest Recht. Nachdem ich fügte der <root> - element zur Verfügung gestellt von sgmoore es funktioniert immer noch nicht, aber nachdem ich Hinzugefügt, Ihre Linie in der AssemblyInfo.cs hat es geklappt.
InformationsquelleAutor Peter
Stellen Sie sicher, dass Sie gab Schreibberechtigungen für den Benutzer:
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\EventLog\MyApp
und wenn Sie hinzufügen möchten mehr logers gehen müssen Nomenklatur:
Glück.
InformationsquelleAutor David Castro