Skip to content

rollickinc/Gelf4NLog

 
 

Repository files navigation

Gelf4NLog Build status Coverage Status

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

Solution

Solution is comprised of 2 projects: Target is the actual NLog target implementation, and UnitTest contains the unit tests for the NLog target

Usage

Use Nuget:

PM> Install-Package Gelf4NLog.Target

Configuration

Here is a sample nlog configuration snippet:

<configSections>
  <section name="nlog" type="NLog.Config.ConfigSectionHandler, NLog" />
</configSections>

<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

	<extensions>
	  <add assembly="Gelf4NLog.Target"/>
	</extensions>

	<targets>
	  <!-- Other targets (e.g. console) -->
    
	  <target name="graylog" 
			  xsi:type="graylog" 
			  endpoint="udp://logs.local:12201" 
			  application="MyApp"
			  environment="PROD"
	  />
	</targets>

	<rules>
	  <logger name="*" minlevel="Debug" writeTo="graylog" />
	</rules>

</nlog>

Redacting sensitive log information

It is possible to redact sensitive information from each log entry using redaction regular expressions:

<targets>
	<target name="graylog" 
		xsi:type="graylog" 
		endpoint="udp://logs.local:12201" 
		application="MyApp" environment="PROD">
		<redact pattern="4[0-9]{12}(?:[0-9]{3})?" replacement="_REDACTED_" />
		<redact pattern="TEST" replacement="****" />
	</target>
</targets>

Options are the following:

  • name: arbitrary name given to the target
  • type: set this to "graylog"
  • endpoint: The address of the GrayLog2 server e.g. udp://logs.local:12201
  • application: The application
  • environment: The environment of the application instance

###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);

##Contributing Would you be interested in contributing? All PRs are welcome.

About

NLog Target for GrayLog2

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C# 97.8%
  • PowerShell 2.2%