来自Gelf4Net的消息不存储在Graylog2中

时间:2013-04-09 02:20:07

标签: asp.net-mvc ubuntu azure log4net graylog2

我有一个在Azure中运行Elasticsearch,MongoDB和Graylog2的Ubuntu服务器,我有一个asp.net mvc4应用程序,我正在尝试从中发送日志。 (我使用Gelf4Net / Log4Net作为日志记录组件)。为了减少追捕,没有任何记录。

(跳到更新以查看错误)

设置

  • 1 Xsmall Ubuntu VM运行graylog2所需的软件
    • 一切都作为守护进程运行
  • 使用MVC4应用程序(2个实例)的Xsmall云服务
  • 虚拟网络设置,以便他们可以交谈。

那我试过了什么?

  • 从linux框中,follow命令将导致记录消息echo "<86>Dec 24 17:05:01 foo-bar CRON[10049]: pam_unix(cron:session):" | nc -w 1 -u 127.0.0.1 514
  • 我可以更改IP地址以使用公共IP,它也可以正常工作。
  • 使用this powershell script我可以从我的开发机器和生产Web服务器记录相同的消息
  • Windows防火墙已关闭,但仍然无效。
  • 我可以登录到FileAppender Log4Net,所以我知道Log4Net正在运行。
  • 拖尾graylog2.log显示没什么兴趣。关于我的插件目录的一些警告 所以我知道一切正常,但我无法让Gelf4Net appender工作。我在这里亏本。我在哪里可以看到?是否有我缺少的东西

GRAYLOG2.CONF

#only showing the connection stuff here. If you need something else let me know
syslog_listen_port = 514
syslog_listen_address = 0.0.0.0
syslog_enable_udp = true
syslog_enable_tcp = false

的web.config / log4net的

//application_start() has log4net.Config.XmlConfigurator.Configure();

<log4net >
  <root>
    <level value="ALL" />
    <appender-ref ref="GelfUdpAppender" />
  </root>
  <appender name="GelfUdpAppender" type="Gelf4net.Appender.GelfUdpAppender, Gelf4net">
    <remoteAddress value="public.ip.of.server"/>
    <remotePort value="514" />
    <layout type="Gelf4net.Layout.GelfLayout, Gelf4net">
      <param name="Facility" value="RandomPhrases" />
    </layout>
  </appender>
</log4net>

更新

由于某种原因,我没有在调试模式下运行graylog :)这样做会显示此消息。

  

2013-04-09 03:00:56,202 INFO:org.graylog2.inputs.syslog.SyslogProcessor - 无法解析日期。由于allow_override_syslog_date为true,因此设置为NOW。   2013-04-09 03:00:56,202 DEBUG:org.graylog2.inputs.syslog.SyslogProcessor - 跳过不完整的消息。

所以它发送的信息不完整。我怎么能看出它有什么问题?

1 个答案:

答案 0 :(得分:1)

我使用了错误的端口(DOH!)

我本应该使用graylog2.config / gelf_listen_port = 12201

中指定的端口

所以我的web.config / log4net / gelf appender应该有

<appender name="GelfUdpAppender" type="Gelf4net.Appender.GelfUdpAppender, Gelf4net">
   ...
    <remotePort value="12201" />
   ...
</appender>

对于可能遇到同样问题的任何人,请确保Log4Net在您更改后重新加载配置。我没有设置为查看配置文件的更改,所以我花了几分钟才意识到我使用了错误的端口。当我第一次将它从514更改为12201时,消息仍未获得。我不得不重新启动服务器以便Log4Net获取新的配置,然后它开始工作。