Sadece şu adımları izleyin aslında başarmak oldukça kolaydır:
Yeri ayrı bir dosya
<configuration>
<configSections>
<section name="enterpriseLibrary.ConfigurationSource" type="Microsoft.Practices.EnterpriseLibrary.Common.Configuration.ConfigurationSourceSection, Microsoft.Practices.EnterpriseLibrary.Common, Version=4.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
</configSections>
<enterpriseLibrary.ConfigurationSource selectedSource="EntLib Config">
<sources>
<add name="EntLig Config" type="Microsoft.Practices.EnterpriseLibrary.Common.Configuration.FileConfigurationSource, Microsoft.Practices.EnterpriseLibrary.Common, Version=4.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
filePath="EntLib.config" />
</sources>
</enterpriseLibrary.ConfigurationSource>
</configuration>
Kurumsal Kütüphane yapılandırma günlüğü filtreyi ekleyin. Kayıt girişlerini filtrelemek için günlük girişi önceliklerini veya kategorilerini kullanabilirsiniz, böylece kodunuzda önceliği veya kategoriyi buna göre ayarlamanız gerekir. Örneğin, 1 gibi çok önemli mesajlar ve düşük öncelikli numarası vermek istiyorum, ve daha ayrıntılı mesajı göz ardı edilir zamanında Enterprise Library yapılandırmasında yapılan 10.
<configuration>
...
<loggingConfiguration name="Logging Application Block" tracingEnabled="true"
defaultCategory="General" logWarningsWhenNoCategoriesMatch="true">
...
<logFilters>
<add minimumPriority="1" maximumPriority="10" type="Microsoft.Practices.EnterpriseLibrary.Logging.Filters.PriorityFilter, Microsoft.Practices.EnterpriseLibrary.Logging, Version=4.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
name="Priority Filter" />
...
</loggingConfiguration>
</configuration>
tüm değişiklikler olabilir - yapılan değişikliklerin dışında Günlük Uygulama Bloğu. MSDN 'de şu gönderiye bakın: Updating Configuration Settings at Run-time
Filtre değerlerini değiştirmek için basit bir yardımcı yöntem uyguladım: Daha ayrıntılı iletiler istediğimde, bu girişlerin maksimum öncelik değerini artırarak kaydedilmesine izin veriyorum. Ben sadece giriş için istisnalar ya da diğer çok önemli mesajlar istediğinizde Aynı şekilde, ben web.config olarak hizmet yenilemeden 1.
var path = System.IO.Path.Combine(Environment.CurrentDirectory, "EntLib.config");
var xd = XDocument.Load(path);
var x = (from z in xd.Root.Elements("loggingConfiguration").Elements("logFilters").Elements() where (z.Attribute("name").Value == "Priority Filter") select z).SingleOrDefault();
x.Attribute("minimumPriority").Value = 1; // Change this value...
x.Attribute("maximumPriority").Value = 5; // ... and this one to specify the range you want to log.
xd.Save(path);
Bu Enterprise Library Günlüğü işlevselliği değişecek, 0 öncelik aralığını ayarlamak asla dokunulmaz. Sadece dezavantaj, günlük girişlerini önceliklendirmek/kategorize etmek için bir tür konvansiyon kullanmanız gerektiğidir.
updated question - 24/7 sunucu uygulaması yazıyorum ve –
yeniden başlatmadan sorun giderme amacıyla çeşitli alanlarda günlüğe kaydetmeyi "yeniden başlatmak istiyorum" Bu, yeniden başlayacağı gibi, yapılandırma yeniden yazma ile olmazdı. Durum sunucusu için SQL kullanıyorsanız, büyük bir anlaşma değil, ama bir isteğin ortasında insanları mırıldanabilir.Kod tabanına bakacağım veya orada ekleyebileceğiniz gibi bir günlüğü windows hizmeti oluşturmayı düşünürdüm. –