Ich möchte ein log4net RollingFileAppender erstellen, die bei jedem Start des Programms eine neue Datei erstellt. Es kann rollen, wenn die Datei zu groß wird, muss aber bei jedem Start der Anwendung neu gestartet werden. Der Appender sollte nicht hinzugefügt werden, wenn ein anderer Appender in der Konfiguration konfiguriert ist. Im Wesentlichen erstellen Sie eine Standardprotokollkonfiguration, die durch Ändern der Konfigurationsdatei außer Kraft gesetzt werden kann.Konfigurieren Sie log4net RollingFileAppender in Code Rolling einmal pro Anwendung starten
5
A
Antwort
8
Nachdem ich eine Reihe von anderen Posts zusammengefügt habe, habe ich endlich funktioniert. Die Implementierung befindet sich in einer statischen Wrapper-Klasse. Alles, was Sie tun müssen, ist, diesen Code in Ihre App einzufügen, den Speicherort für die Erstellung der Datei festzulegen und Log.Configure() aufzurufen, wenn die Anwendung gestartet wird.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Windows.Forms;
using System.Windows.Threading;
using log4net;
using log4net.Core;
using log4net.Appender;
using log4net.Repository.Hierarchy;
using System.Reflection;
using System.IO;
namespace [Your Namespace]
{
public static class Log
{
private static bool isConfigured = false;
private static ILog iLog;
public static void Configure()
{
if (isConfigured)
return;
var loggerName = typeof(DiagnosticsManager).FullName;
var logger = (log4net.Repository.Hierarchy.Logger)log4net.LogManager.GetRepository().GetLogger(loggerName);
var ilogger = log4net.LogManager.GetRepository().GetLogger(loggerName);
//Add the default log appender if none exist
if(logger.Appenders.Count == 0)
{
var directoryName = "[Your directory name here. e.c. 'C:\ProgramData\AppName\Logs']";
//If the directory doesn't exist then create it
if(!Directory.Exists(directoryName))
Directory.CreateDirectory(directoryName);
var fileName = Path.Combine(directoryName, "[Your static file name here. e.c. 'AppName.log']");
//Create the rolling file appender
var appender = new log4net.Appender.RollingFileAppender();
appender.Name = "RollingFileAppender";
appender.File = fileName;
appender.StaticLogFileName = true;
appender.AppendToFile = false;
appender.RollingStyle = log4net.Appender.RollingFileAppender.RollingMode.Size;
appender.MaxSizeRollBackups = 10;
appender.MaximumFileSize = "10MB";
appender.PreserveLogFileNameExtension = true;
//Configure the layout of the trace message write
var layout = new log4net.Layout.PatternLayout()
{
ConversionPattern = "%date{hh:mm:ss.fff} [%thread] %-5level - %message%newline"
};
appender.Layout = layout;
layout.ActivateOptions();
//Let log4net configure itself based on the values provided
appender.ActivateOptions();
log4net.Config.BasicConfigurator.Configure(appender);
}
iLog = LogManager.GetLogger(loggerName);
isConfigured = true;
Info("Logging Configured at " + DateTime.Now.ToString("g"));
}
public static event EventHandler<ExceptionLoggedEventArgs> ExceptionLogged;
public static void Debug(object message) { Configure(); iLog.Debug(message); }
public static void Debug(object message, Exception exception) { Configure(); iLog.Debug(message, exception); }
public static void Error(object message) { Configure(); iLog.Error(message); }
public static void Error(object message, Exception exception) { Configure(); iLog.Error(message, exception); }
public static void Fatal(object message) { Configure(); iLog.Fatal(message); }
public static void Fatal(object message, Exception exception) { Configure(); iLog.Fatal(message, exception); }
public static void Info(object message) { Configure(); iLog.Info(message); }
public static void Info(object message, Exception exception) { Configure(); iLog.Info(message, exception); }
public static void Warn(object message) { Configure(); iLog.Warn(message); }
public static void Warn(object message, Exception exception) { Configure(); iLog.Warn(message, exception); }
}
}
Verwandte Themen
- 1. Konfigurieren RollingFileAppender Datum programmgesteuertes Rolling
- 2. log4Net RollingFileAppender "rollt" nicht
- 3. Konfigurieren Log4Net in Web-Anwendung
- 4. Log4Net RollingFileAppender mit Verbundroll Stil overwritting Daten
- 5. Konfigurieren von AutoMapper einmal pro AppDomain
- 6. Lassen Sie ein Log4Net RollingFileAppender-Set wöchentlich rollen
- 7. log4net GlobalContext.Properties nur einmal gesetzt
- 8. Kopfzeile nur einmal am Anfang einer Rolling-Datei einschließen
- 9. Log4Net mit RollingFileAppender Kombinieren Attribut in Logdaten und heutigen Datum
- 10. ssh-Schlüssel einmal pro Login statt einmal pro Bash hinzufügen
- 11. Log4net - Appender dynamisch zwischen AdoNetAppender und RollingFileAppender wechseln
- 12. Log4Net RollingFileAppender spült nicht IO-Puffer mit geringem Volumen Protokoll
- 13. Wie Anmeldeinformationen auf log4net RollingFileAppender zur Identität festlegen?
- 14. log4net eine Datei pro Lauf
- 15. kann nicht konfigurieren log4net richtig
- 16. Starten Sie die Android-Anwendung ohne Hauptaktivität und starten Sie den Dienst beim Starten der Anwendung
- 17. Log4net RollingFileAppender fehlende Einträge von der Web-API async-Methode
- 18. Log4net mit XML-Datei konfigurieren
- 19. log4net config SqLite in code
- 20. Konfigurieren eines benutzerdefinierten Ereignisprotokolls für log4net
- 21. Ich kann nicht log4net Arbeit in meiner Web-Anwendung machen :(
- 22. Android: Führen Sie asynctask einmal pro Sitzung
- 23. log4net - Entfernen Sie alte Dateien nach Datum rollen
- 24. Log4net Rolling täglich - Format des Dateinamens mit Datum
- 25. Log4net ForwardingAppender Schwelle
- 26. konfigurieren und beobachten log4net mit blob speichern
- 27. Wie kann ich den Code einmal pro Sekunde ausführen?
- 28. Wie angular2-Typoskript Anwendung konfigurieren in VS-Code
- 29. Ertrag nur einmal pro Iteration
- 30. Wie konfiguriere ich einen RollingFileAppender, um mit log4net nach Datum und Größe zu rollen?
+1 für die Buchung der Lösung. War mir heute nützlich, da ich etwas Ähnliches machen wollte. –