2016-04-01 11 views
2

Bazı önemli hatalar durumunda e-postaları NLog posta hedefi üzerinden göndermek istiyorum. Ayrıca web.config dosyasında zaten system.net/mailSettings/smtp'u da yapılandırdım.NLog posta hedefinde system.net/mailSettings/smtp adresinden 'from' adresini kullanmanın herhangi bir yolu var mı?

useSystemNetMailSettings="true"'u ayarladığımda, NLog, 'from' adresi dışında system.net/mailSettings/smtp adresinden her şeyi kullanır. Bu yüzden özellikle posta hedefi için bir kez daha belirtmem gerekiyor.

Ne yaptım? Sadece "MailFrom" değişkenini yarattım ve uygulama başlatıldığında programsal olarak başlatıyorum.

<nlog> 
    <variable name="MailFrom" value=""/> 
    <targets> 
     <target name="mail" type="Mail" from="${var:MailFrom}" html="false" subject="Subject" to="ToList" useSystemNetMailSettings="true"/> 
    </targets> 
</nlog> 
var section = ConfigurationManager.GetSection("system.net/mailSettings/smtp") as SmtpSection; 
if (section != null) 
    LogManager.Configuration.Variables["MailFrom"] = section.From; 

belki bunu yapmanın bazı daha iyi bir yol biliyor musunuz? Teşekkürler.

cevap

0

Bu seçenek NLog 4.3.2'ye eklenmiştir.


Not: Bir güzel yolu FindTargetByName kullanmaktır:

var section = ConfigurationManager.GetSection("system.net/mailSettings/smtp") as SmtpSection; 
if (section != null) 
{ 

    var mailtarget = LogManager.Configuration.FindTargetByName<MailTarget>("mail"); 
    if (mailtarget != null) 
     mailtarget.From = section.From; 
} 
+0

teşekkürler. İyi görünüyor. Yapmam gereken tek değişiklik, hedefi alırken MailTarget yerine AsyncTargetWrapper kullanmaktır. var target = LogManager.Configuration.FindTargetByName ("posta"); var mailtarget = target.WrappedTarget MailTarget olarak; – dimrun

İlgili konular