2

I am trying to configure my .NET Core Application with Graylog v2.5. I am using log4net to log messages.

I have used below configuration to setup the environment. I have intentionally raised exception in my WebAPI controller to validate Graylog setup.

<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>

I am not getting any error. At the same time, I am not getting any output. Below is the output shown in browser.

enter image description here

Can anyone please suggest me what I am doing wrong? What do I need to do to be able to show log messages in the Graylog interface? Where exactly I can see the log messages? I could not get any help from Google and I am pretty new to Graylog.

live-love
  • 48,840
  • 22
  • 240
  • 204
Ashok kumar
  • 1,593
  • 4
  • 33
  • 68

1 Answers1

0

Make sure you are using the rules used by the Stream setup in Graylog.

For example, in this Stream, the property AppName must match exactly the same name as defined in Graylog (MyAppName).

Also, make sure your computer was given permission to write to that stream in Graylog.

enter image description here

Solution 1: Add field to AdditionalFields

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

Solution 2: Add field to data object:

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>
live-love
  • 48,840
  • 22
  • 240
  • 204
  • Is there a way to test this without using the Graylog interface? I dont have permissions to create a stream or input. – LuDevGon Aug 04 '21 at 17:27