NLog не отправляется на papertrail после развертывания на EC2 - PullRequest
0 голосов
/ 15 апреля 2019

При развертывании на моем 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: ссылка на объект не установлена ​​для экземпляра объекта.на 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.SysTlay0 .0.* 1.InnerInvoke () в System.Threading.Tasks.Task.Execute ()

У кого-нибудь есть идеи, как заставить это работать / почему он не работает при развертывании?

1 Ответ

0 голосов
/ 15 апреля 2019

Просто временная задержка, чтобы просто добавить следующее в конфиг, что позволяет ему не падать на «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>

Edit: Исправление было только что передано в Git NLog.Targets.Syslog, который полностью исправил эту проблему для меня. https://github.com/luigiberrettini/NLog.Targets.Syslog/pull/183

...