asp.net-mvc - 来自 Gelf4Net 的消息不存储在 Graylog2 中

标签 asp.net-mvc ubuntu azure log4net graylog2

我有一个 Ubuntu 服务器,在 Azure 中运行 Elasticsearch、MongoDB 和 Graylog2,并且我有一个正在尝试从中发送日志的 asp.net mvc4 应用程序。 (我使用 Gelf4Net/Log4Net 作为日志记录组件)。切入主题,没有记录任何内容。

(跳到更新看看有什么问题)

设置

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

那么我尝试了什么?

  • 在 Linux 盒子中执行以下命令将导致记录一条消息 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 地址以使用公共(public) IP,效果也很好。
  • 使用 this powershell script我可以从我的开发机器以及生产网络服务器记录相同的消息
  • Windows 防火墙已关闭,但它仍然不起作用。
  • 我可以登录到 FileAppender Log4Net,所以我知道 Log4Net 正在工作。
  • 跟踪graylog2.log 没有显示出任何有趣的内容。关于我的插件目录的一些警告 所以我知道一切正常,但我无法让 Gelf4Net 附加程序工作。我在这里很失败。我可以在哪里查看?我有什么遗漏的吗

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>
<小时/>

更新

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

2013-04-09 03:00:56,202 INFO : org.graylog2.inputs.syslog.SyslogProcessor - Date could not be parsed. Was set to NOW because allow_override_syslog_date is true. 2013-04-09 03:00:56,202 DEBUG: org.graylog2.inputs.syslog.SyslogProcessor - Skipping incomplete message.

所以它发送的是不完整的消息。我怎样才能看到它出了什么问题?

最佳答案

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

我应该使用graylog2.config/gelf_listen_port = 12201中指定的端口

所以我的 web.config/log4net/gelf 附加程序应该有

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

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

关于asp.net-mvc - 来自 Gelf4Net 的消息不存储在 Graylog2 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15892219/

相关文章:

c# - 当在内容上方包含 javascript 时,HTML 页面消失

asp.net-mvc - 有没有更好的方法来使用 MVC 4 和 Entity Framework 5 添加子记录?

netbeans - 带有 JDK 7 的 Ubuntu 中的 Javafx(FX 路径?)

azure - Windows Azure Ping 站点

c# - 模型是否使用 Html.Partial() 通过引用部分 View 传递?

ASP.NET图表: setting the fonts on X and Y axis

linux - zookeeper_server.pid : Permission denied FAILED TO WRITE PID

ubuntu - elasticsearch的最大线程数太低

azure - 创建以服务主体作为成员的 Azure AD 动态组

silverlight - Azure ACS 与 Silverlight 网站