У меня есть консольная программа (.Net 4.5) с несколькими приложениями. Приложение файлов работает нормально, некоторые приложения smtp работают, а одно нет.
Все приложения smtp отправляют почту при закрытии приложения, даже если буферы не заполнены, за исключением SmtpAppenderError, который ничего не отправляет. Я пытался:
- см. отладочную информацию из log4net в консоли, ошибок конфигурации нет;
- просмотрите буферы в коллекции BufferingAppenderSkeleton, и все мои сообщения там;
- отправить разным получателям;
- использовать фильтры уровня журнала;
- Фильтры подкачки: если я настрою SmtpAppenderOK для регистрации «ERROR:» и SmtpAppenderError для регистрации «FP:», тогда я буду получать письма с ERROR: от SmtpAppenderOK и ничего не получаю от SmtpAppenderError.
В большинстве случаев используются файловые приложения, приложения Ok и Error, в любом случае DELETE работает нормально, даже если другие приложения имеют сообщения в очереди. Есть ли у вас какие-либо идеи?
Вот моя конфигурация:
<appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender">
<param name="File" value="C:\\Log\\myprogram\\log-" />
<datePattern value="yyyy-MM.dd'.log'" />
<param name="AppendToFile" value="true" />
<param name="Encoding" value="utf-8" />
<param name="RollingStyle" value="Date" />
<param name="StaticLogFileName" value="false" />
<param name="maxSizeRollBackups" value="90" />
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%5p [%d] - %m%n" />
</layout>
</appender>
<appender name="SmtpAppenderError" type="log4net.Appender.SmtpAppender">
<to value="[email protected]" />
<from value="[email protected]" />
<subject value="Error in program" />
<smtpHost value="mail.somewhere.com" />
<port value="25" />
<authentication value="Basic" />
<username value="[email protected]" />
<password value="secret!" />
<bufferSize value="9999" />
<lossy value="false" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%newline%date - %message%newline" />
</layout>
<filter type="log4net.Filter.StringMatchFilter">
<stringToMatch value="ERROR:" />
<acceptOnMatch value="true" />
</filter>
<filter type="log4net.Filter.DenyAllFilter" />
</appender>
<appender name="SmtpAppenderOK" type="log4net.Appender.SmtpAppender">
<to value="[email protected]" />
<from value="[email protected]" />
<subject value="All right!" />
<smtpHost value="mail.somewhere.com" />
<port value="25" />
<authentication value="Basic" />
<username value="[email protected]" />
<password value="secret!" />
<bufferSize value="9999" />
<lossy value="false" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%newline%date - %message%newline" />
</layout>
<filter type="log4net.Filter.StringMatchFilter">
<stringToMatch value="FP:" />
<acceptOnMatch value="true" />
</filter>
<filter type="log4net.Filter.DenyAllFilter" />
</appender>
<appender name="SmtpAppenderDELETE" type="log4net.Appender.SmtpAppender">
<to value="[email protected]" />
<from value="[email protected]" />
<subject value="deleting..." />
<smtpHost value="mail.somewhere.com" />
<port value="25" />
<authentication value="Basic" />
<username value="[email protected]" />
<password value="secret!" />
<bufferSize value="999" />
<lossy value="false" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%newline%date - %message%newline" />
</layout>
<filter type="log4net.Filter.StringMatchFilter">
<stringToMatch value="FP:delete" />
<acceptOnMatch value="true" />
</filter>
<filter type="log4net.Filter.DenyAllFilter" />
</appender>
<root>
<level value="ALL" />
<appender-ref ref="SmtpAppenderError" />
<appender-ref ref="LogFileAppender" />
<appender-ref ref="SmtpAppenderOK" />
<appender-ref ref="SmtpAppenderDELETE" />
</root>