Вы можете использовать как отдельный регистратор;при условии, что ваш log4net.config выглядит примерно так:
<log4net xmlns="urn:log4net">
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
<threshold value="All" />
<file value="../Logs/MyApp/myapp.log" />
<appendToFile value="true" />
<rollingStyle value="Date" />
<datePattern value="yyyy-MM-dd.'log'" />
<maxSizeRollBackups value="5" />
<maximumFileSize value="10MB" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%d{HH':'mm':'ss'.'fff} [%4t] %-5p %M - %m %15property{ipAddress} - %property{orderId}%n" />
</layout>
</appender>
<appender name="SmtpAppender" type="log4net.Appender.SmtpAppender">
<to value="<your to address>" />
<from value="<your from address>" />
<subject value="<your subject line>" />
<smtpHost value="<your smtp host>"/>
<username value="<your username>" />
<password value="<your password>" />
<port value="25" />
<authentication value="Basic" />
<evaluator type="log4net.Core.LevelEvaluator">
<threshold value="Error" />
</evaluator>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%newline[%property{log4net:HostName}] [%date] [%-5level] [%logger] - [%message]%newlineIp[%property{IpAddress}] Session[%property{SessionId}] OrderId[%property{OrderId}] UserAgent[%property{UserAgent}]%newline%newline%exception" />
</layout>
</appender>
<root>
<level value="ALL" />
<appender-ref ref="RollingLogFileAppender" />
<appender-ref ref="SmtpAppender" />
</root>
</log4net>
Тогда вы можете изменить его так, чтобы он выглядел следующим образом:
<log4net xmlns="urn:log4net">
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
<threshold value="All" />
<file value="../Logs/MyApp/myapp.log" />
<appendToFile value="true" />
<rollingStyle value="Date" />
<datePattern value="yyyy-MM-dd.'log'" />
<maxSizeRollBackups value="5" />
<maximumFileSize value="10MB" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%d{HH':'mm':'ss'.'fff} [%4t] %-5p %M - %m %15property{ipAddress} - %property{orderId}%n" />
</layout>
</appender>
<appender name="SmtpAppender" type="log4net.Appender.SmtpAppender">
<to value="<your to address>" />
<from value="<your from address>" />
<subject value="<your subject line>" />
<smtpHost value="<your smtp host>"/>
<username value="<your username>" />
<password value="<your password>" />
<port value="25" />
<authentication value="Basic" />
<evaluator type="log4net.Core.LevelEvaluator">
<threshold value="Error" />
</evaluator>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%newline[%property{log4net:HostName}] [%date] [%-5level] [%logger] - [%message]%newlineIp[%property{IpAddress}] Session[%property{SessionId}] OrderId[%property{OrderId}] UserAgent[%property{UserAgent}]%newline%newline%exception" />
</layout>
</appender>
<appender name="SmtpJobAppender" type="log4net.Appender.SmtpAppender">
<to value="<job to address>" />
<from value="<job from address>" />
<subject value="<job subject line>" />
<smtpHost value="<your smtp host>"/>
<username value="<your username>" />
<password value="<your password>" />
<port value="25" />
<authentication value="Basic" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%newline[%property{log4net:HostName}] [%date] [%-5level] [%logger] - [%message]%newlineIp[%property{IpAddress}] Session[%property{SessionId}] OrderId[%property{OrderId}] UserAgent[%property{UserAgent}]%newline%newline%exception" />
</layout>
</appender>
<logger name="Any.Name.You.Want.To.Indicate.This.Is.Your.Job.Completed.Log">
<level value="ALL"/>
<appender-ref ref="SmtpJobAppender"/>
</logger>
<root>
<level value="INFO" />
<appender-ref ref="RollingLogFileAppender" />
<appender-ref ref="SmtpAppender" />
</root>
</log4net>
И в классе у вас есть функция завершения работы, вы быобъявите свой регистратор заданий:
private static readonly ILog JobLogger = LogManager.GetLogger("Any.Name.You.Want.To.Indicate.This.Is.Your.Job.Completed.Log");
И в своем полном методе используйте свой регистратор заданий:
JobLogger.Info("Job complete - process time was " + process.Time);
Это позволит вам иметь разные строки темы в ваших полных электронных письмах о работе и вашей ошибкеэлектронные письма.Они могут даже отличаться от адресов, что упрощает настройку правил вашего почтового клиента.