2008-12-16 20 views
41

Log4net yapılandırma verilerini application.config dosyasında saklamak istiyorum. Belgelerin benim anlayışıma göre, benim yaptığım şu:Yapılandırma verileri için log4net uygulama yapılandırma dosyası kullanıldı

  1. AssemblyInfo.cs aşağıdaki satırı ekleyin

  2. log4net.dll bir başvuru ekleyin:

    [assembly: log4net.Config.XmlConfigurator(Watch = true)] 
    
  3. Başlatma aşağıdaki gibi logger:

    private static readonly ILog log = LogManager.GetLogger(typeof(frmWizard)); 
    
  4. Benim app.config aşağıdaki kodu vardır:

Ancak
<configSections> 
     <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" /> 
    </configSections> 
    <log4net> 
     <appender name="EventLogAppender" type="log4net.Appender.EventLogAppender" > 
     <layout type="log4net.Layout.PatternLayout"> 
      <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" /> 
     </layout> 
     </appender> 
     <root> 
     <level value="INFO" /> 
     <appender-ref ref="ConsoleAppender" /> 
     </root> 
    </log4net> 

, Uygulamayı çalıştırdığınızda, ben konsolda aşağıdaki hatayı alıyorum:

yok appender adında [Consoleappender ] bulunabilir.

Ayar dosyasından ayarları okumak için log4net'i nasıl alabilirim?

Teşekkürler!

+0

App.config'inizde hangi kodunuz var? – sgwill

+3

Diğerlerine not: Gösterilen 'app.config' ayarları, 'EventLogAppender' için' 'bölümünde ve' ConsoleAppender' adlı ' 'adlı öğenin adında * doğru * hariç bölüm - eşleşmiyor. @ Konstantin'in cevabı. Ayrıca, ** nasıl kullanacağınızı öğrenmek için bu soruyu kullanarak, log4net ** ile aşina olmayanlar ** için ** ** muhtemelen burada birinden daha farklı bir * tip * eklentisi ** isteyeceğinizi unutmayın - örneğin type = "log4net .Appender.FileAppender, log4net "' (Windows Olay Günlüğüne değil, bir dosyaya eklenir). –

cevap

33

configsections eleman

<configSections> 
<section name="log4net" 
    type="log4net.Config.Log4NetConfigurationSectionHandler, log4net, Version=1.2.10.0, 
     Culture=neutral, PublicKeyToken=1b44e1d426115821" /> 
</configSections> 

Sonra sonra ... log4net bölümünü ekleyin, ama başka bir yerde gerçek log4net yapılandırma dosyasına Delegesi

<log4net configSource="Config\Log4Net.config" /> 
da app.config bir satır ekleyin

Günlüğünüzü oluştururken, uygulama kodunda,

private static ILog GetLog(string logName) 
{ 
    ILog log = LogManager.GetLogger(logName); 
    return log; 
} 
+0

Diğer yapılandırma konumu için – Jay

+0

+1'e ihtiyaç duyduğum için teşekkürler Bir seçenek –

+0

Bir yan not olduğunu fark etmedi, ben de bulunamadı: [assembly: log4net.Config.XmlConfigurator (ConfigFile = "Log4Net.config", Watch = true)] 'Özel olarak ** ConfigFile =" Log4Net.config "**. –

2

configsection işleyicisini app.config dosyanıza eklemeyi denediniz mi? Örneğin.

<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/> 
31

Sorguda gösterilen yapılandırmada, ancak bir ekleyici yapılandırılmış ve "EventLogAppender" olarak adlandırılmıştır. Ancak, kök yapılandırmasında, yazar "ConsoleAppender" adlı bir ekleyiciye, dolayısıyla hata mesajına başvurur.

1

Tüm ek adları kök bölüme yansıtılmalıdır.
Sizin örneğinizde, ek adı EventLogAppender ancak <root> <appender-ref .. bölümünde ConsoleAppender olarak adlandırılmıştır. Eşleşmeleri gerekiyor.

Günlük yapılandırmanıza birden fazla ek ekleyebilir, ancak bunların her birini <root> bölümüne kaydettirmeniz gerekir.

<appender-ref ref="ConsoleAppender" /> 
<appender-ref ref="EventLogAppender" /> 

Ayrıca Log4net yapılandırma hakkında apache documentation başvurabilirsiniz.

1

@Charles Bretana'nın yanıtını tam olarak destekliyorum. işe yaramıyor Ancak, tek <section> unsuru olduğundan emin olmak VE o configSections kök elemanı ait ilk çocuğu edin:

configsections yapılandırmadan sonra app.Config ilk elemanı olmalıdır:

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <configSections> 
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=1b44e1d426115821" /> 
    </configSections> 
    <!-- add log 4 net config !--> 
    <!-- add others e.g. <startup> !--> 
</configuration> 
+0

Bu anahtar: ** root öğesinin ilk çocuğu ** – CJBS

İlgili konular