log4net: Создание логгера динамически, стоит ли мне о чем-то беспокоиться? - PullRequest
5 голосов
/ 15 апреля 2010

Мне нужно создавать логгеры динамически, поэтому с постом отсюда и помощью отражателя мне удалось динамически создавать логгеры, но я хотел бы знать, стоит ли мне беспокоиться о чем-то еще. .. Я не знаю, какое значение может иметь это.

    public static ILog GetDyamicLogger(Guid applicationId)
    {
        Hierarchy hierarchy = (Hierarchy)LogManager.GetRepository();
        RollingFileAppender roller = new RollingFileAppender();
        roller.LockingModel = new log4net.Appender.FileAppender.MinimalLock();
        roller.AppendToFile = true;
        roller.RollingStyle = RollingFileAppender.RollingMode.Composite;
        roller.MaxSizeRollBackups = 14;
        roller.MaximumFileSize = "15000KB";
        roller.DatePattern = "yyyyMMdd";
        roller.Layout = new log4net.Layout.PatternLayout();
        roller.File = "App_Data\\Logs\\"+applicationId.ToString()+"\\debug.log";
        roller.StaticLogFileName = true;

        PatternLayout patternLayout = new PatternLayout();
        patternLayout.ConversionPattern = "%date [%thread] %-5level %logger [%property{NDC}] - %message%newline";
        patternLayout.ActivateOptions();

        roller.Layout = patternLayout;
        roller.ActivateOptions();
        hierarchy.Root.AddAppender(roller);

        hierarchy.Root.Level = Level.All;
        hierarchy.Configured = true;

        DummyLogger dummyILogger = new DummyLogger(applicationId.ToString());
        dummyILogger.Hierarchy = hierarchy;
        dummyILogger.Level = log4net.Core.Level.All;
        dummyILogger.AddAppender(roller);

        return new LogImpl(dummyILogger);
    }

    internal sealed class DummyLogger : Logger
    {
        // Methods
        internal DummyLogger(string name)
            : base(name)
        {
        }
    }

Приветствие.

1 Ответ

2 голосов
/ 16 апреля 2010

Я бы сказал, что вам не нужно беспокоиться о создании регистраторов в коде. Это один из поддерживаемых методов их создания. Вы теряете возможность изменять вещи во время работы приложения (если вы не напишите код для него). Это только одно из преимуществ использования конфигурационных файлов.

...