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 is comprised of 2 projects: Target is the actual NLog target implementation, and UnitTest contains the unit tests for the NLog target
Use Nuget:
PM> Install-Package Gelf4NLog.Target
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>
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.