Chciałbym utworzyć dziennik RollingFileAppender log4net, który tworzy nowy plik przy każdym uruchomieniu programu. Może się toczyć, jeśli plik dostaje się do dużych rozmiarów, ale musi się toczyć za każdym razem, gdy uruchamiana jest aplikacja. Aplikant nie powinien być dodawany, jeśli w konfiguracji jest skonfigurowany inny program dostarczający. W gruncie rzeczy tworzenie domyślnej konfiguracji dziennika, którą można przesłonić poprzez zmianę pliku konfiguracyjnego.Skonfiguruj log4net RollingFileAppender w kodzie zwijającym się raz na uruchomienie aplikacji
5
A
Odpowiedz
8
Po złożeniu kilku innych stanowisk, w końcu udało mi się to zrobić. Implementacja jest w statycznej klasie opakowania. Wszystko, co musisz zrobić, to wkleić ten kod do swojej aplikacji, ustawić lokalizację do utworzenia pliku i wywołać Log.Configure() podczas uruchamiania aplikacji.
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); }
}
}
Powiązane problemy
- 1. Log4net - dynamiczne przełączanie aplikacji między AdoNetAppender i RollingFileAppender
- 2. Skonfiguruj log4net, aby wysyłać błędy do różnych aplikacji na poziomie
- 3. Skonfiguruj Log4net do zapisu w wielu plikach.
- 4. log4net RollingFileAppender z kompozytowych stylu toczenia jest overwritting dane
- 5. Log4Net: Zaloguj się z czasem UTC
- 6. Skonfiguruj Log4Net tak, aby nie używał aplikacji dostarczającej smtp, jeśli działa pewna maszyna.
- 7. Uruchomienie procesu xcode7.2 nie powiodło się: minął czas oczekiwania na uruchomienie aplikacji
- 8. Inicjalizacja log4net
- 9. Log4Net w osobnym pliku konfiguracyjnym
- 10. Skonfiguruj ścieżkę kompilatora C w aplikacji RStudio
- 11. FileNamePattern w RollingFileAppender - konfiguracja logback
- 12. Log4Net RollingFileAppender nie przepłukuje bufora IO z logiem o niskiej głośności
- 13. Wymusza uruchomienie aplikacji iOS w trybie poziomym
- 14. Konfiguracja log4net dla aplikacji konsoli
- 15. log4net GenericFailure. Nie można uzyskać blokady pliku
- 16. Android. Uruchomienie aplikacji z Dialer
- 17. log4net problem wydajność BufferingForwardingAppender
- 18. Jak skonfigurować RollingFileAppender do rzucania według daty i rozmiaru za pomocą log4net?
- 19. Kliknij raz rollback aplikacji
- 20. Jak przełączyć się z Log4Net na NLog w Quartz.Net?
- 21. WPF: Odwoływanie się do zasobów aplikacji w całym kodzie
- 22. Tornado WebSocket zamyka się raz na minutę
- 23. Jeden plik dziennika na uruchomienie z log4j
- 24. Uruchomienie testu nie powiodło się: Odmowa zezwolenia: uruchomienie oprzyrządowania KomponentInfo
- 25. Zastąpienie odrzuconej aplikacji na iPhone'a spowoduje uruchomienie nowego procesu sprawdzania?
- 26. ASP.NET Core RC2 Skonfiguruj niestandardowe ustawienia aplikacji
- 27. Najlżejszy sposób na uruchomienie IIS na Macu?
- 28. Czy istnieje sposób na uruchomienie aplikacji zaraz po instalacji przy użyciu "aplikacji pomocnika"?
- 29. Wymuś uruchomienie aplikacji na platformie Azure Web Rola
- 30. log4net - Usuń stare pliki toczenia według daty
+1 za zaksięgowanie rozwiązania. Przydało mi się dzisiaj, ponieważ chciałem zrobić coś podobnego. –