一旦部署到EC2,NLog就不会发送到papertrail

问题描述 投票:0回答:1

部署到我的EC2时,NLog似乎不再正常工作。在本地部署时,我在记录聊天时没有问题。另一方面,它正在快速写入内部日志并忽略它是否应该写入内部日志的值。

我已经尝试将要使用的协议类型从TCP切换到UDP,从而阻止它写入错误(但也不允许它连接到PaperTrail,这是重点)。我也试过关闭内部日志记录,这也行不通。重温我的NLog.config,以及多次完成初始教程。我还检查了端口的防火墙设置,端口的EC2安全组设置以及防火墙上的应用程序权限。

NLog版本:“4.6.2”

平台:.Net 4.5

当前NLog配置(xml或C#,如果相关)

<?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"
      xsi:schemaLocation="http://www.nlog-project.org/schemas/NLog.xsd NLog.xsd"
      autoReload="true"
      throwExceptions="false"
      internalLogLevel="false" internalLogFile="c:\temp\nlog-internal.log">

  <extensions>
    <add assembly="NLog.Targets.Syslog" />
  </extensions>
  <targets>
    <target name="syslog" type="Syslog">
      <messageCreation>
        <facility>Local7</facility>
          <rfc5424 hostname="${machinename}-Ragnarok" appName="ChatServer-Ragnarok" />

      </messageCreation>
      <messageSend>
        <protocol>TCP</protocol>
        <tcp>
          <server>logs.papertrailapp.com</server>
          <port>REDACTED</port>
          <tls>
            <enabled>true</enabled>
          </tls>
        </tcp>
      </messageSend>
    </target>

    <target name="logfile" xsi:type="File" fileName="file.txt" />
    <target name="logconsole" xsi:type="Console" />

  </targets>

  <rules>
      <logger name="*" minLevel="Trace" appendTo="syslog" />
      <logger name="*" minlevel="Info" writeTo="logconsole" />
      <logger name="*" minlevel="Debug" writeTo="logfile" />
  </rules>
</nlog>


实际错误如下(日志中每隔几秒重复一次):2019-04-15 13:35:22.3986警告SendAsync失败异常:System.NullReferenceException:对象引用未设置为对象的实例。 at NLog.Targets.Syslog.MessageSend.SocketInitializationForWindows.KeepAliveConfigurationIsUpToDate(KeepAliveConfig keepAliveConfig)在NLog.Targets.Syslog.MessageSend.SocketInitializationForWindows.ApplyKeepAliveValues(套接字套接字,KeepAliveConfig keepAliveConfig)在NLog.Targets.Syslog.MessageSend.SocketInitialization.SetKeepAlive(套接字套接字) ,KeepAliveConfig keepAliveConfig)在NLog.Targets.Syslog.MessageSend.Tcp.Init()的NLog.Targets.Syslog.MessageSend.MessageTransmitter.b__21_0(任务_)NLog.Targets.Syslog.Extensions.TaskExtensions。<> c__DisplayClass0_01.<Then>b__0(Task t) at System.Threading.Tasks.ContinuationResultTaskFromTask1.InnerInvoke ()at System.Threading.Tasks.Task.Execute()

有没有人对如何使其工作/为什么它在部署时不起作用有任何想法?

c# nlog
1个回答
0
投票

现在只是一个权宜之计,只需将以下内容添加到配置中,这样就不会在“Keep Alive”上崩溃

    <?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"
      xsi:schemaLocation="http://www.nlog-project.org/schemas/NLog.xsd NLog.xsd"
      autoReload="true"
      throwExceptions="false"
      internalLogLevel="false" internalLogFile="c:\temp\nlog-internal.log">

  <extensions>
    <add assembly="NLog.Targets.Syslog" />
  </extensions>
  <targets>
    <target name="syslog" type="Syslog">
      <messageCreation>
        <facility>Local7</facility>
          <rfc5424 hostname="${machinename}-Ragnarok" appName="ChatServer-Ragnarok" />

      </messageCreation>
      <messageSend>
        <protocol>TCP</protocol>
        <tcp>
          <server>logs.papertrailapp.com</server>
          <port>REDACTED</port>
          <tls>
            <enabled>true</enabled>
          </tls>
          <keepAlive>
            <enabled>false</enabled>
            <time>15</time>
          </keepAlive>
        </tcp>
      </messageSend>
    </target>

    <target name="logfile" xsi:type="File" fileName="file.txt" />
    <target name="logconsole" xsi:type="Console" />

  </targets>

  <rules>
      <logger name="*" minLevel="Trace" appendTo="syslog" />
      <logger name="*" minlevel="Info" writeTo="logconsole" />
      <logger name="*" minlevel="Debug" writeTo="logfile" />
  </rules>
</nlog>

我添加的代码如下:

<keepAlive>
    <enabled>false</enabled>
    <time>15</time>
</keepAlive>

编辑:一个修复程序刚刚推送到NLog.Targets.Syslog的git,它完全修复了这个问题。 https://github.com/luigiberrettini/NLog.Targets.Syslog/pull/183

© www.soinside.com 2019 - 2024. All rights reserved.