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
NİHAİ ÇÖZÜM:
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
Neden nesne yerine bir işaretçi kendis...
C , neden (int)yerine static_cast<i...
Yerine kullanmak " ne;addPreferenc...
Soyut bir sınıf yerine bir arabirimi k...
AngularJS : servisi kullanmak için ne ...