¿Puedes configurar log4net en código en lugar de usar un archivo de configuración?

¿Puedes configurar log4net en código en lugar de usar un archivo de configuración?

SOLUCIÓN FINAL: 1

Para cualquiera que pueda tropezar con esto en el futuro, esto es lo que hice. Hice la clase estática a continuación:

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;
        }
    }
}

Y luego todo lo que tuve que hacer fue reemplazar el código donde llamé al archivo XML con la siguiente llamada:

//XmlConfigurator.Configure(new FileInfo("app.config")); // Not needed anymore
Logger.Setup();

1(esta respuesta fue editada en la pregunta por el OP, me tomé la libertad de convertirla en una respuesta de la comunidad, mira aquí por qué)


También puede escapar de XML por completo, escribí una muestra con una configuración programática mínima aquí.

En pocas palabras, esto es lo que necesita

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í, puede configurar log4net llamando a:

log4net.Config.XmlConfigurator.Configure(XmlElement element)

Consulte la documentación de log4net.