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

  • CaptainDisillusion

    CaptainDisil

    18 EYLÃœL 2007
  • We've moved!

    We've moved!

    7 Ocak 2008
  • ODN

    ODN

    26 Kasım 2006