2009-04-16 15 views
140

Log4net'i her zaman kullanırım, ancak daha önce hiç anlayamadığım bir şey içeride neler olup bittiğini anlatmaktır. Örneğin, projemde bir konsol ekleyicisi ve bir veritabanı ekleyicisi var. Veritabanında ve kodda birkaç değişiklik yaptım ve şimdi veritabanı ekleyicisi artık çalışmıyor. Sonunda neden olduğunu anlayacağım, ancak log4net'in içinde neler olduğunu görebilsem çok yardımcı olur.Log4net sorunları nasıl giderilir?

Log4net, sorunumun kaynağını belirlemeye çalışmak için görüntüleyebileceğim herhangi bir çıktı üretiyor mu? Eğer çıkış aynı .config dosyasında aşağıdaki kodu ekleyebilirsiniz kaydetmek istediğiniz dosyayı belirlemek için, Sonra

<configuration> 
    <appSettings> 
     <add key="log4net.Internal.Debug" value="true"/> 
    </appSettings> 
</configuration> 

:

cevap

224

Önce uygulama yapılandırma dosyası üzerinde bu değeri ayarlamak zorunda : Sen altında daha ayrıntılı bir açıklama bulabilirsiniz

<configuration> 
... 

<system.diagnostics> 
    <trace autoflush="true"> 
     <listeners> 
      <add 
       name="textWriterTraceListener" 
       type="System.Diagnostics.TextWriterTraceListener" 
       initializeData="C:\tmp\log4net.txt" /> 
     </listeners> 
    </trace> 
</system.diagnostics> 

... 
</configuration> 

'nasıl iç hata ayıklamayı log4net olurlar?' , log4net FAQ page.

+7

Uygulamanızın altında çalıştığı işlemin, günlüğe kaydetme metin dosyanızı oluşturmak istediğiniz yolun haklarına sahip olduğundan emin olun (yukarıdaki örnekte "C: \ tmp \ log4net.txt") – Jtrx

+0

bu eksik Uygulamamda neler olduğunu bulmak için ipucu teşekkürler: D – NFRiaCowboy

+2

İç hata ayıklama zaman damgası yok gibi görünüyor – snit80

15

Yukarıdaki cevaba ek olarak, bu satırı c: \ tmp \ log4net.txt çıkışı yerine gerçek zamanlı olarak görmek için kullanabilirsiniz. Örneğin, bir konsol uygulamasında bunu ekleyebilir ve çıkışı gerçek zamanlı olarak izleyebilirsiniz. Test ettiğiniz ekleyiciyle neler olduğunu görmek için küçük bir test kayışında log4net hata ayıklama için iyidir. Eğer bir log4net yapılandırma dosyası kullanıyorsanız

24

da üst düğümü değiştirerek orada hata ayıklama açabilirsiniz: config yeniden bir kez

<log4net debug="true"> 

Bu çalışır ve iz dinleyici varsayarak doğru olarak kurulup kurulmadığını .

0

Dahili günlük yeterli bilgi vermezse, source code'u oluşturmak ve hata ayıklamak çok kolaydır. Bunu geliştirme projenizle karıştırmak istemiyorsanız, yalnızca bir iletiyi günlüğe kaydeden, projenizin log4net.config numaralı kopyasını bu uygulamaya kopyalayan ve söz konusu sınıfı hata ayıklayan basit bir konsol uygulaması ekleyin.

0

Giriş noktanızın log4net'e bir şey kaydettiği kök uygulamasının olduğundan emin olun. Bunlardan birini verin:

2.0.8 ile ilginç bir durum yaşadım. Bir kütüphane projesi ve yeteneklerini açıklayacak bir test projesi oluşturdum. Kütüphane projesi, exe projesi olarak Log4net'i kullanmak için kuruldu. Exe projesi, configu kaydetmek için assemblyinfo özelliğini kullanmıştı, ancak konsol ya da günlük dosyasına kayıt çıktısı almıyordum. Log4net iç hata ayıklama günlüğünü açtığımda, konsola yazılan bazı iç iletileri aldım, ancak yine de normal günlüklerimden hiçbiri yok. Hata bildirilmedi. Yukarıdaki kodu programıma eklediğimde her şey çalışmaya başladı. Log4net aksi halde doğru şekilde kuruldu.