Pan*_*ria 6 .net c# vb.net logging log4net
我希望能够指定多个smtp服务器主机地址并实现一个逻辑,如果使用一个smtp服务器的电子邮件失败,它会尝试使用下一个smtp服务器地址发送.是否可以使用log4net.我们可以覆盖log4net的一些功能并在其中实现我们自己的逻辑来发送电子邮件吗?
<appender name="SmtpAppender" type="log4net.Appender.SmtpAppender">
<to value="group@ivp.in" />
<from value="uname@ivp.in" />
<subject>Error Notification</subject>
**<smtpHost value="10.0.0.12, 10.0.0.13" />**
<authentication value="None" />
<port value="25" />
<bufferSize value="1" />
<EnableSsl value="false"/>
<lossy value="true" />
<evaluator type="log4net.Core.LevelEvaluator">
<threshold value="ERROR"/>
</evaluator>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%newline%date [%thread] %level %logger - %message%newline%newline%exception" />
</layout>
</appender>
Run Code Online (Sandbox Code Playgroud)
Igo*_*bin 44
有一种更简单的方法
<to value="group@ivp.in,group2@ivp.in,group3@ivp.in,group4@ivp.in" />
Run Code Online (Sandbox Code Playgroud)
只有在您实施时才有可能custom SmtpAppender.
我CustomSmtpAppender从Log4net源代码示例中复制了代码.希望这会对你有所帮助.
不要忘记CustomSmtpAppender在你的应用程序配置中引用
using System;
using System.IO;
using System.Web.Mail;
using log4net.Layout;
using log4net.Core;
using log4net.Appender;
namespace SampleAppendersApp.Appender
{
/// <summary>
/// Simple mail appender that sends individual messages
/// </summary>
/// <remarks>
/// This SimpleSmtpAppender sends each LoggingEvent received as a
/// separate mail message.
/// The mail subject line can be specified using a pattern layout.
/// </remarks>
public class SimpleSmtpAppender : AppenderSkeleton
{
public SimpleSmtpAppender()
{
}
public string To
{
get { return m_to; }
set { m_to = value; }
}
public string From
{
get { return m_from; }
set { m_from = value; }
}
public PatternLayout Subject
{
get { return m_subjectLayout; }
set { m_subjectLayout = value; }
}
public string SmtpHost
{
get { return m_smtpHost; }
set { m_smtpHost = value; }
}
#region Override implementation of AppenderSkeleton
override protected void Append(LoggingEvent loggingEvent)
{
try
{
StringWriter writer = new StringWriter(System.Globalization.CultureInfo.InvariantCulture);
string t = Layout.Header;
if (t != null)
{
writer.Write(t);
}
// Render the event and append the text to the buffer
RenderLoggingEvent(writer, loggingEvent);
t = Layout.Footer;
if (t != null)
{
writer.Write(t);
}
MailMessage mailMessage = new MailMessage();
mailMessage.Body = writer.ToString();
mailMessage.From = m_from;
mailMessage.To = m_to;
if (m_subjectLayout == null)
{
mailMessage.Subject = "Missing Subject Layout";
}
else
{
StringWriter subjectWriter = new StringWriter(System.Globalization.CultureInfo.InvariantCulture);
m_subjectLayout.Format(subjectWriter, loggingEvent);
mailMessage.Subject = subjectWriter.ToString();
}
if (m_smtpHost != null && m_smtpHost.Length > 0)
{
SmtpMail.SmtpServer = m_smtpHost;
}
SmtpMail.Send(mailMessage);
}
catch(Exception e)
{
ErrorHandler.Error("Error occurred while sending e-mail notification.", e);
}
}
override protected bool RequiresLayout
{
get { return true; }
}
#endregion // Override implementation of AppenderSkeleton
private string m_to;
private string m_from;
private PatternLayout m_subjectLayout;
private string m_smtpHost;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6368 次 |
| 最近记录: |