Мне нужно создать динамические журналы, поэтому с сообщением from here и с помощью рефлектора мне удалось динамически создать регистраторы, но я хотел бы знать, должен ли я беспокоиться о чем-то другом ... Я не знаю, последствия могут сделать это.log4net: динамически создавайте журнал, я должен что-то беспокоиться?
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.
Вам нужна очень хорошая причина использовать этот код, а не использовать конфигурационный файл :-) –
Причина в том, что мое приложение динамически создает сообщества во время выполнения, и я хочу поддерживать файл журнала для каждого из них. – vtortola