【问题标题】:Graylog is not showing logs with log4net and .NET Core ApplicationGraylog 未显示 log4net 和 .NET Core 应用程序的日志
【发布时间】:2019-11-28 10:04:24
【问题描述】:

我正在尝试使用 Graylog v2.5 配置我的 .NET Core 应用程序。我正在使用 log4net 来记录消息。

我使用以下配置来设置环境。我故意在我的 WebAPI 控制器中引发异常以验证 Graylog 设置。

<appender name="AsyncGelfUdpAppender" type="Gelf4Net.Appender.AsyncGelfUdpAppender, Gelf4Net">
<!-- Number of log lines to buffer for async send. Defaults to 10-->
<bufferSize value="20" />
<!-- Number of tasks to use for the async appender. 0 or fewer indicates one task per processor-->
<threads value="2" />
<remoteAddress value="127.0.0.1" />
<remotePort value="6789" />
<layout type="Gelf4Net.Layout.GelfLayout, Gelf4Net">
  <param name="AdditionalFields" value="app:AsyncUdpAppender,version:1.0,Environment:Dev,Level:%level" />
  <param name="Facility" value="RandomPhrases" />
  <param name="IncludeLocationInformation" value="true" />
  <param name="SendTimeStampAsString" value="true" />
</layout>

我没有收到任何错误。同时,我没有得到任何输出。以下是浏览器中显示的输出。

谁能告诉我我做错了什么?我需要做什么才能在 Graylog 界面中显示日志消息?我究竟在哪里可以看到日志消息?我无法从 Google 获得任何帮助,而且我对 Graylog 还很陌生。

【问题讨论】:

  • 您能否在 log4net 中添加一个控制台日志附加程序并检查是否记录了该异常
  • 您找到解决问题的方法了吗??

标签: asp.net-core-mvc log4net graylog


【解决方案1】:

确保您使用 Graylog 中的流设置所使用的规则。

例如,在此 Stream 中,属性 AppName 必须与 Graylog (MyAppName) 中定义的名称完全相同。

另外,请确保您的计算机已获得在 Graylog 中写入该流的权限。

解决方案 1: 将字段添加到 AdditionalFields

 <log4net>
...
  <param name="AdditionalFields" value="app:DotnetcoreUdpAppender,version:1.0,Environment:Dev,AppName:MyAppName" />
                ...
 </log4net>

解决方案 2:向数据对象添加字段:

protected static readonly ILog log = LogManager.GetLogger("GelfUdpAppender");

         Dictionary<string, string> logData = new Dictionary<string, string>
         {
            {"AppName", "MyAppName"}, // pass your property rule here
            {"Message", message},

         };
         log.Info(logData);
<log4net>
      <appender name="GelfUdpAppender" type="Gelf4Net.Appender.GelfUdpAppender, Gelf4Net.UdpAppender">
         <remoteAddress value="server-name" />
         <remotePort value="12201" />
         <layout type="Gelf4Net.Layout.GelfLayout, Gelf4Net.UdpAppender">
            <param name="AdditionalFields" value="app:DotnetcoreUdpAppender,version:1.0,Environment:Dev" />
            <param name="Facility" value="test" />
            <param name="IncludeLocationInformation" value="true" />
         </layout>
      </appender>
      <root>
         <level value="ALL" />
         <appender-ref ref="GelfUdpAppender" />
      </root>
   </log4net>

【讨论】:

  • 有没有办法在不使用 Graylog 接口的情况下进行测试?我没有创建流或输入的权限。
猜你喜欢
  • 2021-03-21
  • 1970-01-01
  • 2021-11-12
  • 2015-04-02
  • 2021-04-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多