Skip to content

Gelf4NLog is an [NLog] target implementation to push log messages to [GrayLog2].

License

Notifications You must be signed in to change notification settings

GokGokalp/NLog.Web.AspNetCore.Targets.Gelf

Repository files navigation

NLog.Web.AspNetCore.Targets.Gelf

Gelf4NLog is an NLog target implementation to push log messages to GrayLog2. It implements the Gelf specification and communicates with GrayLog server via UDP.

NuGet version

History

Code forked from https://github.com/2020Legal/NLog.Targets.Gelf which is a fork from https://github.com/akurdyukov/Gelf4NLog who forked the origonal code from https://github.com/seymen/Gelf4NLog

I transformed the project to .NET Core.

Usage

Use Nuget:

$ dotnet add package NLog.Web.AspNetCore.Targets.Gelf

Configuration

Here is a sample nlog.config configuration file for graylog:

<?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"
      autoReload="true"
      throwExceptions="false"
      internalLogLevel="Off"
      internalLogFile="c:\temp\internal-nlog.txt">
  <extensions>
    <add assembly="NLog.Web.AspNetCore"/>
    <add assembly="NLog.Web.AspNetCore.Targets.Gelf"/>
  </extensions>
  <targets>
    <target xsi:type="File" name="debugFile" filename="C:\@Logs\${shortdate}-${level}-${applicationName}.txt" layout="${longdate}|${level:upperCase=true}|${logger}|${aspnet-Request-Method}|url: ${aspnet-Request-Url}${aspnet-Request-QueryString}|${message}" concurrentWrites="false" />
    <target xsi:type="Gelf" name="graylog" endpoint="udp://192.168.99.100:12201" facility="console-runner" sendLastFormatParameter="true" gelfVersion="1.1">
	
	<!-- Optional parameters -->
	<parameter name="param1" layout="${longdate}"/>
	<parameter name="param2" layout="${callsite}"/>
    </target>
  </targets>
  <rules>
    <logger name="*" minlevel="Debug" writeTo="debugFile, graylog" />
  </rules>
</nlog>

Options are the following:

  • name: arbitrary name given to the target
  • xsi:type: set this to "gelf"
  • endpoint: the uri pointing to the graylog2 input in the format udp://{IP or host name}:{port} note: support is currently only for udp transport protocol
  • facility: The graylog2 facility to send log messages
  • sendLastFormatParameter: default false. If true last parameter of message format will be sent to graylog as separate field per property
  • gelfVersion: default "1.0". Set this to "1.1" in order to use actual GELF message format

###Code

//excerpt from ConsoleRunner
var eventInfo = new LogEventInfo
				{
					Message = comic.Title,
					Level = LogLevel.Info,
				};
eventInfo.Properties.Add("Publisher", comic.Publisher);
eventInfo.Properties.Add("ReleaseDate", comic.ReleaseDate);
Logger.Log(eventInfo);

or alternatively for simple log messages

Logger.Info("Simple message {0}", value);

or alternatively for use of sendLastFormatParameter

Logger.Info(comic.Title, new { Publisher = comic.Publisher, ReleaseDate = comic.ReleaseDate });

will log Publisher and ReleaseDate as separate fields in Graylog

About

Gelf4NLog is an [NLog] target implementation to push log messages to [GrayLog2].

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published