2013-03-21 1 views
3

로그 파일 이름에 프로세스 ID 정보가 있어야 응용 프로그램이 다시 시작될 때마다 새 로그 파일이 만들어집니다. 두 개의 프로젝트에서 동일한 파일에 로깅하고 있습니다. 이것은 내 구성입니다.프로세스 Id가 log4net 로그 파일 이름에 들어오지 않습니다.

<configuration> 
    <configSections> 
     <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" /> 
    </configSections> 

    <log4net> 
     <appender name="NewLogForEveryRun" type="log4net.Appender.RollingFileAppender"> 
      <file value="c:\\testLogs\\TwoProjects-[%processid].txt" /> 
      <layout type="log4net.Layout.PatternLayout"> 
       <conversionPattern value="%d [%t] %-5p %c - %m%n" /> 
      </layout> 
     </appender> 

     <logger name="ClassLibrary1"> 
      <level value="ERROR" /> 
      <maximumFileSize value="256KB" /> 
      <param name="Threshold" value="ERROR"/> 
      <appender-ref ref="NewLogForEveryRun" /> 
     </logger> 

     <logger name="ClassLibrary2"> 
      <level value="ERROR" /> 
      <maximumFileSize value="256KB" /> 
      <param name="Threshold" value="ERROR"/> 
      <appender-ref ref="NewLogForEveryRun" /> 
     </logger> 
    </log4net> 
</configuration> 

내가 로그 파일 이름에 프로세스 아이디 정보를 얻을 수 %processid을 언급하고있어,하지만 응용 프로그램이 실행될 때, 그것은 TwoProjects-[%processid].txt로 로그 파일 이름을 만듭니다. 실제 프로세스 ID는 파일 이름에 표시되지 않습니다. 이것에 대한 이유는 무엇일까요?

답변

10

기본적으로 파일 값은 패턴이 포함되어 있다고 지정하지 않는 한 파싱되거나 처리되지 않습니다.

솔루션

<file type="log4net.Util.PatternString" value="c:\\testLogs\\TwoProjects-[%processid].txt" /> 
+0

운에 선

<file value="c:\\testLogs\\TwoProjects-[%processid].txt" /> 

을 변경하는 것입니다. 내 로그 파일 이름은 여전히 ​​"TwoProjects - [% processid] .txt"입니다. – Sandeep

+0

이상한. 방금 테스트 해본 결과 TwoProjects- [12256] .txt – sgmoore

+0

해결되었습니다. 문제를 일으킨 log4net dll의 이전 버전을 사용하고있었습니다. – Sandeep

관련 문제