У меня есть несколько приложений в файле log4net.config
.Я хочу по электронной почте всякий раз, когда происходит ошибка.это мой Log4net.config
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
<file type="log4net.Util.PatternString" value="Logs\${ProcessName}.${InstanceName}.Current.log"/>
<appendToFile value="true"/>
<rollingStyle value="Date"/>
<datePattern value="yyyyMMdd"/>
<layout type="namespace.CustomPatternLayout, namespace">
<conversionPattern value="%ProgramId %date [%thread] %-5level %logger [%property{NDC}] - %message%newline"/>
</layout>
</appender>
<appender name="CustomSmtpAppender" type="namespace.CustomSmtpAppender,namespace">
<to value="hahm@domain.com"/>
<from value="hahm@domain.com" />
<subjectLayout type="log4net.Layout.PatternLayout, log4net">
<conversionPattern value="Message from Support//%p:%location"/>
</subjectLayout>
<smtpHost value="domain" />
<bufferSize value="1" />
<authentication value="basic"/>
<port value="587"/>
<filter type="log4net.Filter.LevelRangeFilter">
<levelMin value="ERROR" />
<levelMax value="OFF" />
</filter>
<username value="hahm@domain.com"/>
<password value=""/>
<lossy value="true"/>
<evaluator type="log4net.Core.LevelEvaluator">
<threshold value="ERROR"/>
</evaluator>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="Error occur on %date %newline%-5level - %message%newline" />
</layout>
</appender>
<logger name="EmailLogger" additivity="false" >
<level value="ERROR" />
<appender-ref ref="CustomSmtpAppender" />
</logger>
<root>
<level value="DEBUG" />
<appender-ref ref="RollingLogFileAppender"/>
<appender-ref ref="ColoredConsoleAppender"/>
<appender-ref ref="ConsoleAppender"/>
<appender-ref ref="FallbackAppender"/>
</root>
Итак, я звоню, используя:
LogManager.GetLogger("EmailLogger").Error(ex);
Пример:
catch (Exception ex)
{
LogManager.GetLogger("EmailLogger").Error(ex);
//SaveExceptions.SendExceptionToDB(ex);
Console.WriteLine(ex.Message);
Logger.Error(ex);
throw;
}
Я просто хочу вызвать 'CustomSmtpAppender', когда есть EmailLogger, описать как
LogManager.GetLogger("EmailLogger").Error(ex);
в противном случае я хочу вызвать RollingLogFileAppender, когда ниже описывается в catch
_logger = LogManager.GetLogger(this.GetType());
Когда язапустить мой код, он всегда вызывает CustomSmtpAppender.