¿Cómo puedo enviar por correo electrónico los errores registrados con NLog? [cerrado]


Estoy usando NLog por primera vez, descubrí cómo escribir en un archivo de texto, pero ahora quiero enviarme un correo electrónico a mí mismo. estoy haciendo la suposición de que cuando se suministran credenciales SMTP a NLog. El ensamblado llama al espacio de nombres System.Net.Mail y se encarga de enviar un correo electrónico. Si esto está mal, por favor dímelo. Y si usted ha hecho esto antes le agradecería cualquier información sobre lo que le tomó para lograr enviar correos electrónicos.

Abajo está mi configuración.

    <?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >
  <targets>
    <!--<target name="logfile" xsi:type="File" fileName="C:\Users\keithb\Desktop\TestLog.txt" />-->
    <target name="Mail" xsi:type="Mail" html="true" subject="Error Received" body="${message}"         
         to="[email protected]"
         from="[email protected]"
         Encoding="UTF8"
         smtpUsername="[email protected]"
         enableSsl="False"
         smtpPassword="pa$$word"
         smtpAuthentication="Basic"
         smtpServer="mail.someemail.com"
         smtpPort="25" />
  </targets>
  <rules>
    <!--<logger name="*" minlevel="Debug" writeTo="logfile" />-->
    <logger name="*" level="Error" writeTo="Mail" />
    <logger name="*" level="Fatal" writeTo="Mail" />
  </rules>
</nlog>

Llamo a la error así

Imports NLog

Public Class HandleGetRouteInfo
    Private Shared logger As Logger = LogManager.GetCurrentClassLogger()

    Public Shared Function GetRouteInfo(ByVal routeInfo As RequestGetRouteInfo) As GetRouteInfoResponse
        'TODO: Check route ID, username, password
        logger.Fatal("User" & routeInfo.UserName & "has entered the GetRouteInfo Method.")
        logger.Error("User" & routeInfo.UserName & "has entered the GetRouteInfo Method.")
        Dim str As String = logger.Name
End Function
End Class

Estoy tratando de que envíe el error, que contiene el mensaje, y las cosas que normalmente registra en un archivo, a mi correo electrónico. Sé cómo detectar excepciones y enviármelo por correo electrónico, pero pensé que NLog tenía las capacidades para hacer esto. Cualquier tutorial con ejemplos simples muertos de uso de la funcionalidad de correo electrónico funcionaría. Encontré muchas cosas pero no puedo hacer que funcione. Si has hecho esto, un código de ejemplo o una explicación de qué más necesito hacer ayudaría. No puedo entenderlo qué es lo que estoy haciendo mal. Alguien tiene alguna idea?

Author: Keith Beard, 2012-01-07

2 answers

Cambie su codificación de UTF8 a UTF-8.

Suponiendo que no haya otros errores en la configuración de SMTP (que suele ser la causa de que los mensajes no se envíen), debería funcionar.

 19
Author: Richard,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-01-07 15:46:04

Creo que necesita configurar los ajustes de correo en el system.net. Algo como esto:

<system.net>
  <mailSettings>

    <smtp from="[email protected]">
      <network host="server.net" userName="[email protected]" password="somepassword"/>
    </smtp>

    <!--Just and example of for testing. Cant have both-->
    <smtp deliveryMethod="SpecifiedPickupDirectory" from="[email protected]">
      <network host="localhost"/>
      <specifiedPickupDirectory pickupDirectoryLocation="d:\tmp\email"/>
    </smtp>

  </mailSettings>
</system.net>

La primera opción es usar el servidor SMTP y la segunda para entregar el correo electrónico a su carpeta local. La segunda opción es buena para probar.

 2
Author: Petar Vučetin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-01-07 02:46:58