2017-03-27 2 views
0

이 응용 프로그램 (CMS)의 경우 Log4net은 Config/log4net.config에서 구성됩니다.Log4.net - 런타임에 폴더 세트에 로그온하는 방법?

런타임에 로그 파일을 동적으로 배치해야하는 경로를 설정해야합니다.

나는 다음과 같은 코드 (OnApplicationStarting과) Global.asax에하는

log4net.GlobalContext.Properties["path"] = "testlog"; 
log4net.Config.XmlConfigurator.Configure(); 

을 추가하는 시도 플러스 log4net.config에

<file type="log4net.Util.PatternString" value="c:\Logs\%property{path}\AppLog.log" /> 

로 구성을 변경 한

이 작성 시작 디렉토리 c:\Logs\(null)\AppLog.log - 로깅을 시작하고 잠시 후 원하는 디렉토리 인 c:\Logs\testlog\AppLog.log을 생성하고 계속합니다. 이 디렉토리에 로그인하십시오.

로깅을 시작하기 전에 연결할 수없는 것 같습니다. 내가 어떻게해야하는지에 대한 해결책이나 아이디어가있는 사람 - 그래서 (null) 디렉토리를 먼저 얻지는 않습니까?

어떻게 든 web.config에 설정된 값에 액세스하여 이것을 폴더 이름의 동적 부분으로 사용할 수 있습니까?

[assembly: log4net.Config.XmlConfigurator(Watch = true)] 

AssemblyInfo.cs과 로거를 얻기 전에 속성을 추가

+0

이 가진 모든 진행? –

답변

1

는이 작업을 넣어해야합니다. 여기 은 작업 예입니다

내 설정 :

<appender name="RollingFileAppender" type="log4net.appender.RollingFileAppender"> 
      <file type="log4net.Util.PatternString" value="C:\MyLogs\%property{LogFileName}.txt"/> 
      <appendToFile value="true"/> 
      <rollingStyle value="Size"/> 
      <maximumFileSize value="10MB"/> 
      <maxSizeRollBackups value="5"/> 
      <staticLogFileName value="true"/> 
      <layout type="log4net.Layout.PatternLayout"> 
       <conversionPattern value="%date{ABSOLUTE} [%logger] %level - %message%newline%exception"/> 
      </layout> 
     </appender> 

와 C# 코드 :

using System; 

[assembly: log4net.Config.XmlConfigurator(Watch = true)] 

namespace Log4NetConsoleApplication 
{ 
    class Program 
    { 

     static void Main(string[] args) 
     { 
      log4net.GlobalContext.Properties["LogFileName"] = "log";  

      log4net.ILog log = LogHelper.GetLogger(); 

      Console.WriteLine("hello world"); 

      log.Error("This is my error message"); 

      Console.ReadLine(); 
     } 
    } 
} 
관련 문제