form - error al enviar correo c#
Solo envíe un correo electrónico con todos los errores usando NLog con la aplicación de consola usando C# (1)
Quiero enviar solo un correo electrónico con todos los errores que recibo de mi aplicación de consola C #.
Tengo los objetivos:
<target xsi:type="File" name="HeelpAdsImport_log" fileName="${basedir}/logs/HeelpAdsImport-${shortdate}.log" layout="${longdate} ${uppercase:${level}} ${callsite:className=true:includeSourcePath=true:methodName=true} ${message}" />
<target name="HeelpAdsImport_patrick_email" xsi:type="Mail"
smtpServer="XXXXX"
smtpPort="25"
smtpAuthentication="Basic"
smtpUserName="YYYYYY"
smtpPassword="*ZZZZZZ"
enableSsl="false"
from="DDDDDDDDDD"
to="EEEEEEEEEEE"
layout="${longdate} ${uppercase:${level}} ${callsite:className=true:includeSourcePath=true:methodName=true} ${message}"
/>
Tengo una regla de información y una regla de error:
<logger name="*" minlevel="Info" writeTo="HeelpAdsImport_log" />
<logger name="*" minlevel="Error" writeTo="HeelpAdsImport_patrick_email" />
Tengo varias llamadas en el código para cada uno:
logger.Log(LogLevel.Info, " ----- New Ad Success! - auto.id: " + auto.id + " | auto.plate: " + auto.plate);
logger.Log(LogLevel.Error, "| continue error #4 - auto.id: " + auto.id);
Puede usar un BufferingWrapper para su destino de correo electrónico para agrupar varias entradas de registro en un correo electrónico. Es compatible con el procesamiento por lotes por un período de tiempo especificado (establecer flushTimeout
en milisegundos) y / o para un número específico de entradas de registro (establecer bufferSize
en el número de entradas).
Editar: Envuelva su objetivo actual dentro de un <target type="BufferingWrapper">
así:
<target xsi:type="BufferingWrapper"
name="MailBuffer"
slidingTimeout="false"
bufferSize="100"
flushTimeout="-1">
<target name="HeelpAdsImport_patrick_email" xsi:type="Mail"
smtpServer="XXXXX"
smtpPort="25"
smtpAuthentication="Basic"
smtpUserName="YYYYYY"
smtpPassword="*ZZZZZZ"
enableSsl="false"
from="DDDDDDDDDD"
to="EEEEEEEEEEE"
layout="${longdate} ${uppercase:${level}} ${callsite:className=true:includeSourcePath=true:methodName=true} ${message}${newline}"
/>
</target>
Edición 2: ¿Llama a LogManager.Flush() antes de salir de su programa?
Edición 3: el procesador de diseño ${newline} debe producir un salto de línea en su correo electrónico (al final del atributo de layout
anterior).