2015-01-08 1 views
2

나는이 작업을 수행 할 수 없습니다 :구성 log4net 다른 로그 파일에 쓰기를, 어떤 설정 파일

Configure Log4net to write to multiple files

하지만 코드와 같은 구성을 사용하고 싶습니다. 어떻게해야합니까?

가 여기에 내가 무엇을 시도했다입니다 :

// Configure log A 
Hierarchy hierarchy = (Hierarchy)LogManager.GetRepository(); 

PatternLayout patternLayout = new PatternLayout(); 
patternLayout.ConversionPattern = "%date %level %logger: %message%newline"; 
patternLayout.ActivateOptions(); 

RollingFileAppender appender = new RollingFileAppender(); 
appender.Name = @"MyLogA"; 
appender.File = @"C:\Temp\MyLogs\A.log"; 
appender.AppendToFile = true; 
appender.MaxSizeRollBackups = 2; 
appender.RollingStyle = RollingFileAppender.RollingMode.Size; 
appender.MaximumFileSize = "10MB"; 
appender.Layout = patternLayout; 
appender.LockingModel = new FileAppender.MinimalLock(); 
appender.StaticLogFileName = true; 
appender.ActivateOptions(); 
hierarchy.Root.AddAppender(appender); 

hierarchy.Configured = true; 

// Configure log B 
Hierarchy hierarchyB = (Hierarchy)LogManager.GetRepository(); 

PatternLayout patternLayoutB = new PatternLayout(); 
patternLayoutB.ConversionPattern = "%date %level %logger: %message%newline"; 
patternLayoutB.ActivateOptions(); 

RollingFileAppender appenderB = new RollingFileAppender(); 
appenderB.Name = @"MyLogB"; 
appenderB.File = @"C:\Temp\MyLogs\B.log"; 
appenderB.AppendToFile = true; 
appenderB.MaxSizeRollBackups = 2; 
appenderB.RollingStyle = RollingFileAppender.RollingMode.Size; 
appenderB.MaximumFileSize = "10MB"; 
appenderB.Layout = patternLayout; 
appenderB.LockingModel = new FileAppender.MinimalLock(); 
appenderB.StaticLogFileName = true; 
appenderB.ActivateOptions(); 
hierarchyB.Root.AddAppender(appenderB); 

hierarchyB.Configured = true; 


// Test Log A 

var loggerA = log4net.LogManager.GetLogger("MyLogA"); 

loggerA.Info("TestA"); 
loggerA.Info("TestA"); 
loggerA.Info("TestA"); 
loggerA.Info("TestA"); 
loggerA.Info("TestA"); 

// Test Log B 
var loggerB = log4net.LogManager.GetLogger("MyLogB"); 
loggerB.Info("TestB"); 
loggerB.Info("TestB"); 
loggerB.Info("TestB"); 
loggerB.Info("TestB"); 
loggerB.Info("TestB"); 

을하지만이 작업을 수행 할 때, 10 개의 로그 메시지가 LOGA 및 logb에 모두에 버려진 얻을, 그들은 각각의 개별 로그 파일을 이동하지 않습니다.

어떻게 작동합니까?

답변

2

나는 완전히 이유를 이해하지 않지만, 수정에게 문제 다음

var hierarchy = (Hierarchy)LogManager.GetRepository(); 
hierarchy.Threshold = Level.Debug; 

// Configure LoggerA 
string logNameA = @"A"; 
string fileNameA = @"C:\Temp\MyLogs\A.log"; 
var loggerA = hierarchy.LoggerFactory.CreateLogger("LoggerA"); 
loggerA.Hierarchy = hierarchy; 
loggerA.AddAppender(CreateFileAppender(logNameA,fileNameA)); 
loggerA.Repository.Configured = true; 
loggerA.Level = Level.Debug; 

ILog logA = new LogImpl(loggerA); 

// Configure LoggerB 

string logNameB = @"B"; 
string fileNameB = @"C:\Temp\MyLogs\B.log"; 
var loggerB = hierarchy.LoggerFactory.CreateLogger("LoggerB"); 
loggerB.Hierarchy = hierarchy; 
loggerB.AddAppender(CreateFileAppender(logNameB, fileNameB)); 
loggerB.Repository.Configured = true; 
loggerB.Level = Level.Debug; 

ILog logB = new LogImpl(loggerB); 

// Test 

logA.Error("logA"); 
logA.Error("logA"); 
logA.Error("logA"); 
logA.Error("logA"); 
logA.Error("logA"); 

logB.Error("logB"); 
logB.Error("logB"); 
logB.Error("logB"); 
logB.Error("logB"); 
logB.Error("logB"); 
logB.Error("logB"); 

CreateFileAppender()은 다음과 같습니다

private static IAppender CreateFileAppender(string name, string fileName) 
{ 
    PatternLayout patternLayout = new PatternLayout(); 
    patternLayout.ConversionPattern = "%date %level %logger: %message%newline"; 
    patternLayout.ActivateOptions(); 

    RollingFileAppender appender = new RollingFileAppender(); 
    appender.Name = name; 
    appender.File = fileName; 
    appender.AppendToFile = true; 
    appender.MaxSizeRollBackups = 2; 
    appender.RollingStyle = RollingFileAppender.RollingMode.Size; 
    appender.MaximumFileSize = "10MB"; 
    appender.Layout = patternLayout; 
    appender.LockingModel = new FileAppender.MinimalLock(); 
    appender.StaticLogFileName = true; 
    appender.ActivateOptions(); 
    return appender; 
} 
관련 문제