首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将NLog部署到EC2后,不会发送到书面记录

将NLog部署到EC2后,不会发送到书面记录
EN

Stack Overflow用户
提问于 2019-04-15 21:59:31
回答 1查看 218关注 0票数 0

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

我尝试将要使用的协议类型从TCP切换到UDP,这会阻止它写入错误(但也不允许它连接到PaperTrail,这是重点)。我还尝试关闭了内部日志记录,这也不起作用。在我的NLog.config上重新复制,以及多次复习最初的教程。我还检查了端口的防火墙设置、端口的EC2安全组设置以及防火墙上的应用程序权限。

NLog版本:"4.6.2“

Platform:.Net 4.5

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

代码语言:javascript
复制
<?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 Warn SendAsync failed Exception: System.NullReferenceException: object reference未设置为对象的实例。在NLog.Targets.Syslog.MessageSend.SocketInitializationForWindows.KeepAliveConfigurationIsUpToDate(KeepAliveConfig套接字)在NLog.Targets.Syslog.MessageSend.SocketInitializationForWindows.ApplyKeepAliveValues(Socket套接字,在NLog.Targets.Syslog.MessageSend.SocketInitialization.SetKeepAlive(Socket套接字keepAliveConfig),KeepAliveConfig keepAliveConfig)在NLog.Targets.Syslog.Extensions.TaskExtensions.<>c__DisplayClass0_1.<Then>b__0(Task t) at System.Threading.Tasks.ContinuationResultTaskFromTask1.InnerInvoke()的NLog.Targets.Syslog.MessageSend.Tcp.Init()在System.Threading.Tasks.Task.Execute()

有没有人知道如何让它工作/为什么它在部署时不能工作?

EN

回答 1

Stack Overflow用户

发布于 2019-04-16 03:09:32

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

代码语言:javascript
复制
    <?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>

我添加的代码如下所示:

代码语言:javascript
复制
<keepAlive>
    <enabled>false</enabled>
    <time>15</time>
</keepAlive>

编辑:一个修复被推到了NLog.Targets.Syslog的git中,它为我完全修复了这个问题。https://github.com/luigiberrettini/NLog.Targets.Syslog/pull/183

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55690860

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档