log4net: Creating a logger dynamically, should I w

2020-02-10 08:15发布

I need to create loggers dynamically, so with a post from here and the help of reflector I have managed to create loggers dynamically, but I'd like to know if I should worry about something else ... I don't know wich implications can have do it.

    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)
        {
        }
    }

Cheers.

1条回答
姐就是有狂的资本
2楼-- · 2020-02-10 08:28

I would say that you don't have to worry about creating loggers in code. It's one of the supported methods of creating them. You do lose the ability to change things while the application is running (unless you write the code for it). That's just one of the benefits of using config files.

查看更多
登录 后发表回答