Dynamic log4net

Пример подключения библиотеки log4net в виде объекта без использования конфигов.

На момент написания поста использовалась библиотека log4net версии 2.0.8.

Класс, в котором создаётся логгер. Конструктор принимает 2 параметра - название логгера (оно же название аппендера) и абсолютный путь к файлу лога:

using log4net;
using log4net.Appender;
using log4net.Config;
namespace YourNamespace
{
    public class LoggerHelper
    {
        public ILog Log { get; set; }
        public LoggerHelper(string loggerName, string logFileName)
        {
            var layout = new log4net.Layout.PatternLayout
            {
                ConversionPattern = "%d  %-5p %m%n"
            };
            var appender = new RollingFileAppender
            {
                Name = loggerName,
                File = logFileName,
                StaticLogFileName = true,
                AppendToFile = false,
                RollingStyle = RollingFileAppender.RollingMode.Size,
                MaxSizeRollBackups = 10,
                MaximumFileSize = "10MB",
                PreserveLogFileNameExtension = true,
                Layout = layout
            };
            layout.ActivateOptions();
            appender.ActivateOptions();
            BasicConfigurator.Configure();
            Log = LogManager.GetLogger(loggerName);
            ((log4net.Repository.Hierarchy.Logger)Log.Logger).AddAppender(appender);
        }
    }
}

Использование:

var loggerName = "loggerName";
var logName = @"C:\someFolder\logname.log";
var log = new LoggerHelper(loggerName, logName).Log;
log.Info("Hello World!");

Содержимое лога:

2018-01-10 15:32:38,401  INFO  Hello World!
10.01.2018 ← на главную Теги: log4net, csharp