Puoi configurare log4net nel codice invece di usare un file di configurazione?
SOLUZIONE FINALE: 1
Per chiunque possa imbattersi in questo in futuro, ecco cosa ho fatto. Ho creato la classe statica di seguito:
using log4net;
using log4net.Repository.Hierarchy;
using log4net.Core;
using log4net.Appender;
using log4net.Layout;
namespace Spectrum.Logging
{
public class Logger
{
public static void Setup()
{
Hierarchy hierarchy = (Hierarchy)LogManager.GetRepository();
PatternLayout patternLayout = new PatternLayout();
patternLayout.ConversionPattern = "%date [%thread] %-5level %logger - %message%newline";
patternLayout.ActivateOptions();
RollingFileAppender roller = new RollingFileAppender();
roller.AppendToFile = false;
roller.File = @"Logs\EventLog.txt";
roller.Layout = patternLayout;
roller.MaxSizeRollBackups = 5;
roller.MaximumFileSize = "1GB";
roller.RollingStyle = RollingFileAppender.RollingMode.Size;
roller.StaticLogFileName = true;
roller.ActivateOptions();
hierarchy.Root.AddAppender(roller);
MemoryAppender memory = new MemoryAppender();
memory.ActivateOptions();
hierarchy.Root.AddAppender(memory);
hierarchy.Root.Level = Level.Info;
hierarchy.Configured = true;
}
}
}
E poi tutto quello che dovevo fare era sostituire il codice in cui avevo chiamato il file XML con la seguente chiamata:
//XmlConfigurator.Configure(new FileInfo("app.config")); // Not needed anymore
Logger.Setup();
1(questa risposta è stata modificata nella domanda dall'OP, mi sono preso la libertà di farne una risposta della community, vedi qui perché)
Puoi anche sfuggire completamente a XML, ho scritto un esempio con una configurazione programmatica minima qui.
In poche parole, ecco di cosa hai bisogno
var tracer = new TraceAppender();
var hierarchy = (Hierarchy)LogManager.GetRepository();
hierarchy.Root.AddAppender(tracer);
var patternLayout = new PatternLayout {ConversionPattern = "%m%n"};
patternLayout.ActivateOptions();
tracer.Layout = patternLayout;
hierarchy.Configured = true;
Sì, puoi configurare log4net chiamando:
log4net.Config.XmlConfigurator.Configure(XmlElement element)
Vedi la documentazione di log4net.