1

ファイルに複数のアペンダーがあり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;
        }

EmailLogger が次のように記述されているときに、「CustomSmtpAppender」を呼び出したいだけです

LogManager.GetLogger("EmailLogger").Error(ex);

それ以外の場合は、以下がキャッチで記述されているときに RollingLogFileAppender を呼び出したい

 _logger = LogManager.GetLogger(this.GetType());

コードを実行すると、常に CustomSmtpAppender が呼び出されます。

4

0 に答える 0