programing

NLog로 기록된 오류를 이메일로 보내려면 어떻게 해야 합니까?

sourcejob 2023. 5. 29. 10:36
반응형

NLog로 기록된 오류를 이메일로 보내려면 어떻게 해야 합니까?

나는 처음으로 NLog를 사용하고, 텍스트 파일에 쓰는 방법을 알았지만, 지금은 나 자신에게 이메일을 보내고 싶습니다.SMTP 자격 증명을 NLog에 제공하는 경우를 가정하고 있습니다.어셈블리가 시스템을 호출합니다.Net.Mail 네임스페이스 및 전자 메일 전송을 처리합니다.만약 이것이 틀렸다면 저에게 말해주세요.그리고 만약 당신이 이전에 이것을 했다면, 나는 당신이 이메일을 보내는 데 무엇이 걸렸는지에 대한 정보를 주면 감사할 것입니다.

다음은 제 구성입니다.

    <?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="user2@someemaill.com"
         from="user@someemail.com"
         Encoding="UTF8"
         smtpUsername="user@someemail.com"
         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>

나는 그 오류를 그렇게 부릅니다.

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

오류, 메시지 및 일반적으로 파일에 기록되는 내용을 이메일로 보내도록 하려고 합니다.예외를 포착하여 자신에게 이메일을 보내는 방법을 알고 있지만, NLog가 이를 수행할 수 있는 기능을 가지고 있다고 생각했습니다.이메일 기능을 사용하는 아주 간단한 예가 있는 모든 튜토리얼이 작동할 것입니다.나는 많은 것을 찾았지만 그것을 작동시킬 수 없었습니다.만약 당신이 이것을 했다면, 샘플 코드나 제가 무엇을 더 해야 하는지에 대한 설명이 도움이 될 것입니다.제가 뭘 잘못하고 있는지 모르겠어요.아이디어 있는 사람?

인코딩 변경 위치UTF8로.UTF-8.

SMTP 설정에 다른 오류(일반적으로 메시지가 전송되지 않는 원인)가 없다고 가정하면 작동합니다.

제 생각에 당신은 그것을 설정해야 할 것 같습니다.mailSettings자세한 내용은 system.net 을 참조하십시오.이와 같은 것:

<system.net>
  <mailSettings>

    <smtp from="someone@someone.org">
      <network host="server.net" userName="someone@someone.org" password="somepassword"/>
    </smtp>

    <!--Just an example for testing. Can't have both-->
    <smtp deliveryMethod="SpecifiedPickupDirectory" from="someone@someone.org">
      <network host="localhost"/>
      <specifiedPickupDirectory pickupDirectoryLocation="d:\tmp\email"/>
    </smtp>

  </mailSettings>
</system.net>

첫 번째 옵션은 SMTP 서버를 사용하는 것이고 두 번째 옵션은 로컬 폴더로 전자 메일을 배달하는 것입니다.두 번째 옵션은 테스트에 좋습니다.

언급URL : https://stackoverflow.com/questions/8766263/how-do-i-email-errors-logged-with-nlog

반응형