2011-08-16 5 views
5

log4net을 사용하여 콘솔 응용 프로그램이 있으며 코드에서 logfile 이름을 추가하고 싶습니다. (나는 나중에 쓰레드를 사용한다)log4net log4net.Util.PatternString 코드에서 구성

class Program 
{ 
    static void Main(string[] args) 
    { 
     { 
      log4net.GlobalContext.Properties["fname"] = "aaaa"; 
      log4net.Config.XmlConfigurator.Configure(); 
     } 
    } 
} 

<appender name="default" type="log4net.Appender.RollingFileAppender"> 
    <file type="log4net.Util.PatternString" value="d:\\TEMP\\default_%property{fname}.log"/> 
... 
</appender> 

나는 (null)을 얻는다.

도움 주셔서 감사합니다. - 그것은 나를 위해 작동

+0

여기에 같은 문제가 - 모든 솔루션을 아직? –

+0

null 무엇입니까? 제발 ... –

+0

@Love 그는 경로가'd : \ TEMP \ default_ (null) .log'가되는 것을 의미합니다. 나는 또한 log4net v1.2.13에서이 문제를 겪고있다. –

답변

0

나는 다음 log4net 1.2.11 을 사용하여 내가 사용하고 샘플 구성 (나는 당신과 같은 C# 코드를 사용)입니다 :

<?xml version="1.0"?> 
<configuration> 
    <configSections> 
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/> 
    </configSections> 

    <log4net> 
    <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender"> 
     <file type="log4net.Util.PatternString" value="default_%property{fname}.log"/> 
     <appendToFile value="true"/> 
     <rollingStyle value="Size"/> 
     <maxSizeRollBackups value="10"/> 
     <maximumFileSize value="100KB"/> 
     <staticLogFileName value="true"/> 
     <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline"/> 
     </layout> 
    </appender> 

    <root> 
     <priority value="ALL"/> 
     <appender-ref ref="RollingFileAppender"/> 
    </root> 

    </log4net> 
</configuration> 
+0

가 작동하지 않아 버전 1.2.13.0이 있습니다. –

0

이 작동합니다

나는 log4net 1.2.13.0을 사용했다. 한 가지 고려해야 할 것은 실제 오류를 알려주는 log4net의 내부 디버그를 추가하는 것입니다.

class Program 
    { 
     private static readonly ILog log = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); 
     static void Main(string[] args) 
     { 
      log4net.GlobalContext.Properties["fname"] = "aaaa"; 

      log4net.Config.XmlConfigurator.Configure(); 
      log.Debug("Test"); 
     } 
    } 

구성 섹션

<configuration>  
    <configSections> 
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/> 
    </configSections> 
    <startup> 
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" /> 
    </startup> 
    <log4net debug="true"> 
    <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender"> 
     <file type="log4net.Util.PatternString" value="D:\default_%property{fname}.log"/> 
     <appendToFile value="true"/> 
     <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%date [%thread] %-5level %logger - %message%newline"/> 
     </layout> 
    </appender>  
    <root> 
     <priority value="ALL"/> 
     <appender-ref ref="RollingFileAppender"/> 
    </root>  
    </log4net> 
    <system.diagnostics> 
    <trace autoflush="true"> 
     <listeners> 
     <add 
      name="textWriterTraceListener" 
      type="System.Diagnostics.TextWriterTraceListener" 
      initializeData="E:\USERS\vivek.meka\Documents\Visual Studio 2015\Projects\log4net.txt" /> 
     </listeners> 
    </trace> 
    </system.diagnostics> 
</configuration>