使用NLog

时间:2015-12-23 09:03:22

标签: c# nlog

我希望我的服务将错误日志文件发送给我的电子邮件我试过这个但是它没有工作:

<target name="logfile" xsi:type="File" fileName="${basedir}/logs/log.log"
        archiveFileName="${basedir}/logs/log.{#####}.txt"
        archiveAboveSize="10485760"
        archiveNumbering="Sequence"
        concurrentWrites="true"
        keepFileOpen="false"
        layout="${longdate} - ${level:uppercase=true}: ${message}${onexception:${newline}EXCEPTION\: ${exception:format=ToString}}"
        />


<target name="logmail"
       xsi:type="Mail"
       smtpServer="172.XX.XX.XX"
       smtpPort="25"
       smtpAuthentication="Basic"
       smtpUserName="abc@xyz"
       smtpPassword="XXXX"
       enableSsl="false"
       subject="Jobpool Errors"
       from="abc@xyz"
       to="abc@xyz"
       layout ="${longdate} ${uppercase:${level}} ${callsite:className=true:includeSourcePath=true:methodName=true} ${message}${newline}"
       useSystemNetMailSettings="false"                     
       timeout="30" />

这是记录器的详细信息:

 <logger name="*" minlevel="Debug" writeTo="logfile" />
        <logger name="*" minlevel="Error" writeTo="logmail" />
        <logger name="*" minlevel="Info" writeTo="logmail" />

1 个答案:

答案 0 :(得分:2)

我注意到的第一个显而易见的事情是您已将身份验证设置为None,但是您传递了用户名和密码。如果您的SMTP服务器需要身份验证,则需要将其更改为Basic

smtpAuthentication="Basic"

接下来要检查的是你是否已将此目标与任何记录器相关联,例如:

<logger name="*" minLevel="Info" writeTo="logmail" />

假设配置正确,下一步是启用一些NLog调试功能,尝试识别故障发生的位置。首先,当通过以下配置指令发生错误时,您可以告诉NLog抛出异常:

<nlog throwExceptions="true" />

如果仍然没有产生任何有用的东西,您还可以配置NLog通过以下方式将其内部日志记录写入文件:

<nlog internalLogFile="file.txt" />

有关详细信息,请参阅NLog配置维基页面的this section