이것은 내 문제입니다. 두 가지 파일 (하나는 오류 및 일반 정보)은 C# application 및 log4net으로 로그인하려고합니다. 구성을 찾았습니다.Log4net은 C# 코드에서 로깅 수준이 다른 두 파일 로깅을 설정합니다
private readonly ILog log = LogManager.GetLogger("GENERAL-LOG");
과 : 로깅에 대한 다른 클래스에
public static void Setup()
{
Hierarchy hierarchy = (Hierarchy)LogManager.GetRepository();
hierarchy.Root.RemoveAllAppenders();
PatternLayout patternLayout = new PatternLayout();
patternLayout.ConversionPattern = "%date THREAD [%thread] %logger: %message%newline"; //%-5level
patternLayout.ActivateOptions();
RollingFileAppender infoRoller = new RollingFileAppender();
infoRoller.AppendToFile = true;
infoRoller.File = @"logs\";
infoRoller.RollingStyle = RollingFileAppender.RollingMode.Date;
infoRoller.MaxSizeRollBackups = 3;
infoRoller.Layout = patternLayout;
infoRoller.DatePattern = @"IN\FO\_yyyy-MM-dd.\lo\g";
infoRoller.StaticLogFileName = false;
infoRoller.ActivateOptions();
hierarchy.Root.AddAppender(infoRoller);
MemoryAppender memory = new MemoryAppender();
memory.ActivateOptions();
hierarchy.Root.AddAppender(memory);
hierarchy.Root.Level = Level.Debug;
hierarchy.Configured = true;
}
: XML로,하지만 난 코드에서 그것을 할 싶어,이 내가 하나 개의 파일의 설정 로깅에있는 소스입니다
Logger.Setup();
log.Debug("Configurazioni caricate con successo.");
코드가 작동합니다. 다른 클래스에서
public static void Setup()
{
Hierarchy hierarchy = (Hierarchy)LogManager.GetRepository();
hierarchy.Root.RemoveAllAppenders();
PatternLayout patternLayout = new PatternLayout();
patternLayout.ConversionPattern = "%date THREAD [%thread] %logger: %message%newline"; //%-5level
patternLayout.ActivateOptions();
RollingFileAppender infoRoller = new RollingFileAppender();
infoRoller.AppendToFile = true;
infoRoller.File = @"logs\";
infoRoller.RollingStyle = RollingFileAppender.RollingMode.Date;
infoRoller.MaxSizeRollBackups = 3;
infoRoller.Layout = patternLayout;
infoRoller.DatePattern = @"IN\FO\_yyyy-MM-dd.\lo\g";
infoRoller.StaticLogFileName = false;
infoRoller.ActivateOptions();
hierarchy.Root.AddAppender(infoRoller);
//ADDED CODE
RollingFileAppender errorRoller = new RollingFileAppender();
errorRoller.AppendToFile = true;
errorRoller.File = @"logs\";
errorRoller.RollingStyle = RollingFileAppender.RollingMode.Date;
errorRoller.MaxSizeRollBackups = 3;
errorRoller.Layout = patternLayout;
errorRoller.DatePattern = @"ERROR_yyyy-MM-dd.\lo\g";
errorRoller.StaticLogFileName = false;
errorRoller.ActivateOptions();
hierarchy.Root.AddAppender(errorRoller);
MemoryAppender memory = new MemoryAppender();
memory.ActivateOptions();
hierarchy.Root.AddAppender(memory);
hierarchy.Root.Level = Level.Debug;
hierarchy.Configured = true;
}
}
:
지금, 나는이 로그를 얻을이 변경을했다
private readonly ILog log = LogManager.GetLogger("GENERAL-LOG");
private readonly ILog elog = LogManager.GetLogger("ERROR-LOG");
Logger.Setup();
log.Debug("prova scrittura in file1");
elog.Error("prova errore scrittura in file2");
결과 : 두 로그 파일은 두 개의 메시지로 기록됩니다.
많은 의견을 보내 주시기 바랍니다.
고마워 감사합니다 '로거' 'AddAppender'없이 확장 메서드 'AddAppender'형식의 첫 번째 인수를 받아들이에 대한 정의를 포함하지 않는 '로거 '찾을 수 있습니다 (using 지시문이나 어셈블리 참조가 누락되었습니다.) – Jujjizzu
Log4net Logger 대신 Intellisense가 해당 클래스를 참조한다는 점에서 Setup2() 메서드가있는 클래스의 이름이 Logger라고 지목되었다고 생각합니다. 수업 이름을 뭔가로 바꾸고 해결책을 시도하십시오. 내 호출 클래스 이름이 로거가 아니기 때문에 위의 내용은 훌륭하게 작동합니다. –