que name logger ejemplo c# log4net

c# - name - log4net que es



Log4Net: especifique mediante programación múltiples registradores(con múltiples apéndices de archivos) (3)

Espero que esto ayude, configura un registrador de consola simple.

static void Main(string[] args) { const string logLayoutPattern = "[%date %timestamp][%level] %message %newline" + "Domain: %appdomain, User: %username %identity %newline" + "%stacktracedetail{10} %newline" + "%exception %newline"; var wrapperLogger = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); var logger = (Logger) wrapperLogger.Logger; logger.Hierarchy.Root.Level = Level.All; var consoleAppender = new ConsoleAppender { Name = "ConsoleAppender", Layout = new PatternLayout(logLayoutPattern) }; logger.Hierarchy.Root.AddAppender(consoleAppender); logger.Hierarchy.Configured = true; wrapperLogger.Debug("Hello"); Console.ReadKey(); }

¿Cómo (programáticamente, sin xml config) configura múltiples registradores con Log4Net? Necesito que escriban en diferentes archivos.


Este hilo en el panel de control de log4net detalla un enfoque .

Para resumir un poco, con suerte sin estafar demasiado código:

using log4net; using log4net.Appender; using log4net.Layout; using log4net.Repository.Hierarchy; // Set the level for a named logger public static void SetLevel(string loggerName, string levelName) { ILog log = LogManager.GetLogger(loggerName); Logger l = (Logger)log.Logger; l.Level = l.Hierarchy.LevelMap[levelName]; } // Add an appender to a logger public static void AddAppender(string loggerName, IAppender appender) { ILog log = LogManager.GetLogger(loggerName); Logger l = (Logger)log.Logger; l.AddAppender(appender); } // Create a new file appender public static IAppender CreateFileAppender(string name, string fileName) { FileAppender appender = new FileAppender(); appender.Name = name; appender.File = fileName; appender.AppendToFile = true; PatternLayout layout = new PatternLayout(); layout.ConversionPattern = "%d [%t] %-5p %c [%x] - %m%n"; layout.ActivateOptions(); appender.Layout = layout; appender.ActivateOptions(); return appender; } // In order to set the level for a logger and add an appender reference you // can then use the following calls: SetLevel("Log4net.MainForm", "ALL"); AddAppender("Log4net.MainForm", CreateFileAppender("appenderName", "fileName.log")); // repeat as desired


using System; using Com.Foo; using System.Collections.Generic; using System.Text; using log4net.Config; using log4net; using log4net.Appender; using log4net.Layout; using log4net.Repository.Hierarchy; public class MyApp { public static void SetLevel(string loggerName, string levelName) { ILog log = LogManager.GetLogger(loggerName); Logger l = (Logger)log.Logger; l.Level = l.Hierarchy.LevelMap[levelName]; } // Add an appender to a logger public static void AddAppender(string loggerName, IAppender appender) { ILog log = LogManager.GetLogger(loggerName); Logger l = (Logger)log.Logger; l.AddAppender(appender); } // Add an appender to a logger public static void AddAppender2(ILog log, IAppender appender) { // ILog log = LogManager.GetLogger(loggerName); Logger l = (Logger)log.Logger; l.AddAppender(appender); } // Create a new file appender public static IAppender CreateFileAppender(string name, string fileName) { FileAppender appender = new FileAppender(); appender.Name = name; appender.File = fileName; appender.AppendToFile = true; PatternLayout layout = new PatternLayout(); layout.ConversionPattern = "%d [%t] %-5p %c [%logger] - %m%n"; layout.ActivateOptions(); appender.Layout = layout; appender.ActivateOptions(); return appender; } private static readonly ILog log = LogManager.GetLogger(typeof(MyApp)); static void Main(string[] args) { BasicConfigurator.Configure(); SetLevel("Log4net.MainForm", "ALL"); AddAppender2(log, CreateFileAppender("appenderName", "fileName.log")); log.Info("Entering application."); Console.WriteLine("starting........."); log.Info("Entering application."); Bar bar = new Bar(); bar.DoIt(); Console.WriteLine("starting........."); log.Error("Exiting application."); Console.WriteLine("starting........."); } } namespace Com.Foo { public class Bar { private static readonly ILog log = LogManager.GetLogger(typeof(Bar)); public void DoIt() { log.Debug("Did it again!"); } } }