2009-08-24 5 views
14

모든 것을 콘솔 출력에 기록하기 위해 log4net을 구성하려고했습니다. 나는 Log4Net.configxml 파일로 log4net 구성

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <configSections> 
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" /> 
    </configSections> 
    <log4net> 
    <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender" > 
     <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%date [%thread] %-5level %logger [%ndc] - %message%newline" /> 
     </layout> 
    </appender> 
    <root> 
     <level value="INFO" /> 
     <appender-ref ref="ConsoleAppender" /> 
    </root> 
    </log4net> 
</configuration> 

라는 이름의 설정 파일을하고 난 (그냥 테스트 케이스)

namespace TestLog4Net { 
    class Program { 
     private static readonly ILog log = LogManager.GetLogger(typeof(Program)); 

     static void Main(string[] args) { 
      log.Info("Info"); 
      log.Error("Error"); 
      Console.ReadKey(); 
     } 
    } 
} 

내가 AssemblyInfo.cs

[assembly: log4net.Config.XmlConfigurator(
ConfigFile = "Log4Net.config", Watch = true)] 

하지만 지금은 아무것도에이 라인을 추가 내 주요 클래스가 누군가가 이것을 설명 할 수 있습니까?

+0

정확히 동일한 문제가 발생합니다. 나는 비슷한 구현을 가지고 있으며 여전히 문제를 해결할 수 없다. 당신이 그것을 고칠 수 pls 수 있습니까? – Karthikeyan

+2

log4net.config 파일이 등록 정보에서 "출력으로 복사"-> "항상 복사"로 표시되어 있는지 확인하십시오. – Amit

답변

18

별도의 구성 파일에 log4net 구성이 있으면 configuration 및 configSections 요소를 포함하면 안됩니다. log4net은 xml 선언 다음에 최상위 요소 여야합니다.

17

이렇게하면됩니다. 나를 위해 일했다. ..

string logFilePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "\\Config\\Log4Net.config"); 
    FileInfo finfo = new FileInfo(logFilePath); 
    log4net.Config.XmlConfigurator.ConfigureAndWatch(finfo); 

나는 매우 늦게 대답을 알고있다. 그러나 어떤 사람에게는 유용 할 것입니다.