Bir yapılandırma dosyası kullanmak yerine kod log4net ayarlayabilirsiniz? | Netgez.com
SORU
2 Mayıs 2013, PERŞEMBE


Bir yapılandırma dosyası kullanmak yerine kod log4net ayarlayabilirsiniz?

Günlük ayarlama app.config dosya kullanır anlıyorum - kolayca bilgi kodunu yeniden derlemek için gerek kalmadan kaydedilir nasıl değiştirebilirsiniz. Ama benim durumumda benim yürütülebilir ile app.config dosyası paketi istemiyorum. Ve benim günlük Kur değiştirmek gibi bir niyetim yok.

Beni app.config kullanmak yerine kod günlüğü ayarlamak için bir yolu var mı?

Burada basit bir yapılandırma dosyası:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
  </configSections>
  <log4net>
    <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
      <file value="Logs\EventLog.txt" />
      <appendToFile value="false" />
      <rollingStyle value="Size" />
      <maxSizeRollBackups value="5" />
      <maximumFileSize value="1GB" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="Úte [%thread] %-5level %logger - %message%newline" />
      </layout>
    </appender>
    <appender name="MemoryAppender" type="log4net.Appender.MemoryAppender">
    </appender>
    <root>
      <level value="Info" />
      <appender-ref ref="RollingLogFileAppender" />
      <appender-ref ref="MemoryAppender" />
    </root>
  </log4net>
</configuration>

DÃœZENLEME:

Tamamen açık olmak için: XML dosyası olması için benim hedefim. Bir akış halinde yazıyorum gömülü bir kaynak olarak bile. Amacım logger tamamen programlı olarak tanımlamak için. Sözdizimi örneği nerede bulabilirim, eğer öyleyse eğer mümkünse ve sadece merak.

CEVAP
23 EKİM 2013, ÇARŞAMBA


NİHAİ ÇÖZÜM:1

Gelecekte bu takılmaları olabilir herkes için, burada yaptığım şey. Statik sınıfı altında yaptım:

using log4net;
using log4net.Repository.Hierarchy;
using log4net.Core;
using log4net.Appender;
using log4net.Layout;

namespace Spectrum.Logging
{
    public class Logger
    {
        public static void Setup()
        {
            Hierarchy hierarchy = (Hierarchy)LogManager.GetRepository();

            PatternLayout patternLayout = new PatternLayout();
            patternLayout.ConversionPattern = "Úte [%thread] %-5level %logger - %message%newline";
            patternLayout.ActivateOptions();

            RollingFileAppender roller = new RollingFileAppender();
            roller.AppendToFile = false;
            roller.File = @"Logs\EventLog.txt";
            roller.Layout = patternLayout;
            roller.MaxSizeRollBackups = 5;
            roller.MaximumFileSize = "1GB";
            roller.RollingStyle = RollingFileAppender.RollingMode.Size;
            roller.StaticLogFileName = true;            
            roller.ActivateOptions();
            hierarchy.Root.AddAppender(roller);

            MemoryAppender memory = new MemoryAppender();
            memory.ActivateOptions();
            hierarchy.Root.AddAppender(memory);

            hierarchy.Root.Level = Level.Info;
            hierarchy.Configured = true;
        }
    }
}

Ve ben de yapmam gereken tüm XML aşağıdaki çağrı ile dosya aradım nerede kodunu değiştir:

//XmlConfigurator.Configure(new FileInfo("app.config")); // Not needed anymore
Logger.Setup();

1(bu cevap OP tarafından gündeme düzenlendiği, özgürlük bu toplumun bir cevap, see here why) yapmak için aldım

Bunu PaylaÅŸ:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VÄ°DEO

Rastgele Yazarlar

  • ChrisCrossMedia

    ChrisCrossMe

    17 EYLÃœL 2009
  • Howard Pinsky

    Howard Pinsk

    6 AÄžUSTOS 2006
  • Tome Rodrigo

    Tome Rodrigo

    9 Temmuz 2006