如何通过电子邮件将log4net日志文件通过电子邮件发送给他们?
问题描述:
我有以下的web.config如何通过电子邮件将log4net日志文件通过电子邮件发送给他们?
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
<log4net>
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="***************\\log.txt" />
<appendToFile value="true" />
<rollingStyle value="Size" />
<!--max size roll backups: number of files produced before overridden (.count) after name-->
<maxSizeRollBackups value="5" />
<maximumFileSize value="10MB" />
<staticLogFileName value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %level %logger - %message%newline" />
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<levelMin value="WARN" />
<levelMax value="FATAL" />
</filter>
</appender>
<root>
<level value="WARN" />
<appender-ref ref="RollingLogFileAppender" />
</root>
</log4net>
和电子邮件
<system.net>
<mailSettings>
<smtp deliveryMethod="Network" from="**********@***.com">
<network host="smtp.gmail.com" port="***" defaultCredentials="false" userName="**************" password=***********" enableSsl="true" />
</smtp>
</mailSettings>
</system.net>
一切工作正常。然而,我想要在每次文件翻转时通过电子邮件发送一个日志文件...所以当一个文件已满并且下一个文件开始追加时,我想通过电子邮件发送完整文件。我不知道如何甚至开始这个...
感谢
答
你必须为了增加邮寄文件来创建自定义的appender从RollingFileAppender
继承,并重写AdjustFileBeforeAppend方法。以下是现有方法,可以修改您可以修改的RollingFileAppender
的文件。使用File
属性查找文件名并使用System.Net.Mail.SmtpClient
发送邮件。
// log4net.Appender.RollingFileAppender
protected virtual void AdjustFileBeforeAppend()
{
if (this.m_rollDate)
{
DateTime now = this.m_dateTime.Now;
if (now >= this.m_nextCheck)
{
this.m_now = now;
this.m_nextCheck = this.NextCheckDate(this.m_now, this.m_rollPoint);
// send the file here
this.RollOverTime(true);
}
}
if (this.m_rollSize)
{
if (this.File != null && ((CountingQuietTextWriter)base.QuietWriter).Count >= this.m_maxFileSize)
{
// send the file here
this.RollOverSize();
}
}
}
我没有做过,但我的猜测是你需要建立一个新的追加程序类,从'RollingFileAppender'也许一个推导,并添加电子邮件的代码存在。看看[源代码](http://svn.apache.org/viewvc/logging/log4net/trunk/src/log4net/Appender/RollingFileAppender.cs?view=markup),你可能很容易做到这一点只需重写一个或两个虚拟方法即可。 – 2014-09-27 16:30:49