Пример Log4net нескольких приложений для разных уровней - PullRequest
0 голосов
/ 25 апреля 2018

У меня есть несколько приложений в файле 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.

...