Vorrei creare un log4net RollingFileAppender che crea un nuovo file ogni volta che si avvia il programma. Può rotolare se il file diventa troppo grande, ma deve rotolare ogni volta che viene avviata l'applicazione. L'appender non dovrebbe essere aggiunto se un altro appender è configurato nella configurazione. In sostanza, la creazione di una configurazione di registro predefinita che può essere sostituita modificando il file di configurazione.Configura log4net RollingFileAppender nel codice in rotazione una volta per inizio applicazione
5
A
risposta
8
Dopo aver assemblato un certo numero di altri post, ho finalmente ottenuto il risultato. L'implementazione è in una classe wrapper statica. Tutto quello che devi fare è incollare questo codice nella tua app, impostare il percorso per creare il file e chiamare Log.Configure() all'avvio dell'applicazione.
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); }
}
}
Problemi correlati
- 1. Configura Log4Net in applicazioni web
- 2. Log4net RollingFileAppender Size estensione file rollingStyle
- 3. Log4net - passare dinamicamente l'appender tra AdoNetAppender e RollingFileAppender
- 4. log4net GlobalContext.Properties impostato solo una volta
- 5. Avere un Log4Net RollingFileAppender impostato su roll settimanale
- 6. log4net - configura utilizzando più file di configurazione
- 7. Come si configura il pool di connessioni DBX nel codice?
- 8. Log4Net RollingFileAppender con lo stile di laminazione composito è overwritting dati
- 9. configura e guarda log4net usando il negozio BLOB
- 10. Includi intestazione solo una volta nella parte superiore di un file a rotazione
- 11. Configura o estendi log4net SmtpAppender con soggetti personalizzati
- 12. log4Net file di log non in scrittura
- 13. codice Javascript in esecuzione una volta
- 14. Log4Net RollingFileAppender non scarica il buffer IO con il registro del volume basso
- 15. Come personalizzare log4j2 RollingFileAppender?
- 16. Fare ruotare questa rotazione animata CSS3 solo una volta
- 17. Devo dichiarare logger log4net una volta per classe o in classe base?
- 18. Come includere log4net per una libreria di classi?
- 19. log4net log4net.Util.PatternString configure dal codice
- 20. applicazione ASP.Net scorre lento a prima volta
- 21. l'accesso a questa applicazione ancora una volta di riconnettersi con Facebook - il codice di errore 190
- 22. Sicurezza thread di log4net
- 23. Log4Net in un file di configurazione separato
- 24. FileNamePattern in RollingFileAppender - configurazione di logback
- 25. Come si esegue il codice una sola volta e solo una volta in Swift?
- 26. Come eseguire la configurazione programmatica per log4j2 RollingFileAppender
- 27. Esiste una versione di log4net per Silverlight?
- 28. Log4net non scrive su file
- 29. configurazione log4net con [assembly:]
- 30. Modi per inserire una password nel codice
+1 per pubblicare la soluzione. Mi è stato utile oggi perché volevo fare qualcosa di simile. –