2011-08-16 7 views
5

Mam aplikację konsoli z log4net i chciałbym dodać nazwę pliku logu z kodu. (Używam wątków później)log4net log4net.Util.PatternString configure z kodu

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> 

I otrzymuję (zerowy).

Dzięki za pomoc.

+0

ten sam problem tutaj - jeszcze żadnego rozwiązania? –

+0

Co to jest zero? Proszę ... –

+0

@Love On oznacza, że ​​ścieżka kończy się na 'd: \ TEMP \ default_ (null) .log'. Też mam ten problem z log4net v1.2.13. –

Odpowiedz

0

To działa na mnie - Kiedyś log4net 1.2.11 Poniżej znajduje się przykładowa konfiguracja używam (użyłem tego samego kodu C# jak ty):

<?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

nie działa dla mnie, mam wersję 1.2.13.0 –

0

To powinno działać

Użyłem log4net 1.2.13.0. Jedną z rzeczy, którą powinieneś rozważyć, jest dodanie wewnętrznego debugowania dla log4net, które powie Ci rzeczywisty błąd.

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"); 
     } 
    } 

sekcja Config

<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>