2013-05-30 16 views
7

Kısa bir süre önce burada bir kullanıcı sayesinde log4net'e rastladım. Neyse, ben her Console.Write() ve Debug.Write() otomatik olarak yapılandırılmış tek bir günlük dosyasına günlüğe kaydetmek istiyorum. Ayrıca, log4net hakkında hiçbir şey bilmeyen Konsol/Hata Ayıklama ifadelerine sahip birçok sınıf kütüphanesi kullanıyorum. Bunlar ayrıca yapılandırmaya göre otomatik olarak günlük dosyasına kaydedilebilir mi? Bu mümkün mü?log4net Günlüğe kaydetme Debug.WriteLine ve Console.WriteLine

Ben haddeleme günlük dosyasına kaydedilir istediğiniz Ne: hata ayıklama (

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

    <log4net> 
    <appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender"> 
     <param name="File" value="SubToolsPortServerTest.log"/> 
     <lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> 
     <appendToFile value="true" /> 
     <rollingStyle value="Size" /> 
     <maxSizeRollBackups value="2" /> 
     <maximumFileSize value="1MB" /> 
     <staticLogFileName value="true" /> 
     <layout type="log4net.Layout.PatternLayout"> 
     <param name="ConversionPattern" value="%d [%t] %-5p %c %m%n"/> 
     </layout> 
    </appender> 

    <root> 
     <level value="ALL" /> 
     <appender-ref ref="LogFileAppender" /> 
    </root> 
    </log4net> 
</configuration> 

cevap

7

Sen Debug.WriteLine yönlendirebilirsiniz:

Console.WriteLine("console statement"); 
Debug.WriteLine("debug statement"); 

örneğini Logger:

private static readonly ILog log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); 
private static void InitializeLogger() 
{ 
    XmlConfigurator.Configure(); 
} 

Bütün app.config özel biryazarak log4net için Trace.WriteLine oluşturur Log4net'e bağlanan 210. En basit uygulama belirgin bit gibi bir şey olacaktır:

public class Log4NetTraceListener : TraceListener 
{ 
    ILog _logger = ...; 

    public override void WriteLine(string message) 
    { 
     _logger.Info(message); 
    } 
} 
Ardından gibi uygulama yapılandırma dosyası şey bu yapılandırmak istiyorum

: logger adının yapılandırmasını destekleyebilir

<system.diagnostics> 
    ... 
    <listeners> 
     <add name="traceListener" type="MyNamespace.Log4NetTraceListener,MyAssembly" /> 
    </listeners> 
    ... 
</system.diagnostics> 

daha tam uygulama , kullanılacak günlüğe kaydetme düzeyi ve belki de bazı iç iletiler.

Console.WriteLine için, Console.SetOut arayarak kendi özel TextWriter yönlendirmesi olabilir ve özel TextWriter log4net için oturum başladı.

+0

Joe, Cevabınızı Debug ve Console.WriteLines için log4net'e verme ile ilgili sorumu yanıtlarken yanıtınızı kabul ediyorum. Ancak, her bir projeye log4net eklemeyi ve hata ayıklama ifadelerini değiştirmeyi daha kolay buldum. Teşekkür ederim. – JMooney

+0

Bunu yapan herkes kilitlenme yaşıyor mu? – dmarlow