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

  • Māris Zaharovs

    Māris Zahar

    28 Mayıs 2008
  • Myron and Nejusha dance

    Myron and Ne

    2 AĞUSTOS 2012
  • NextGenWindows

    NextGenWindo

    8 Kasım 2011