serilog-sinks-newrelic-logs
serilog-sinks-newrelic-logs copied to clipboard
A Serilog sink that writes events to the NewRelic Logs.
A Serilog sink that writes events to the NewRelic Logs.
Getting started
Log.Logger = new LoggerConfiguration()
.WriteTo.NewRelicLogs(
endpointUrl: "https://log-api.newrelic.com/log/v1",
applicationName: "Serilog.Sinks.NewRelic.Sample",
licenseKey: "[Your API key]")
.CreateLogger();
If you have new relic agent and use environment variables NEW_RELIC_APP_NAME and NEW_RELIC_LICENSE_KEY, you can do just:
Log.Logger = new LoggerConfiguration()
.WriteTo.NewRelicLogs()
.CreateLogger();
The available parameters are:
applicationNameof the current application in NewRelic If the parameter is omitted, then the value of the "NewRelic.AppName" appSetting will be used.endpointUrlis the ingestion URL of NewRelic Logs. The US endpoint is used by default if this value is omitted.licenseKeyis the NewRelic License key, which is also used with the NewRelic Agent.insertKeyis New Relic Insert API key. EitherlicenseKeyorinsertKeymust be supplied.
The events are submitted to NewRelic Logs in batches, and the sink is derived from PeriodicBatchingSink. It therefore supports the following parameter:
batchSizeLimitis the maximum number of events to include in a single batch. Default is 1000 entriesperiodis the time to wait between checking for event batches. It is TimeSpan with a default value of 2 seconds. If provided from AppSettings, the value should be given as an absolute time span, i.e.: "0.00:00:05" standing for 5 seconds.
The batches are formatted using NewRelic Logs detailed JSON body and are transmitted GZip-compressed.
All properties along with the rendered message will be emitted to NewRelic Logs. This sink adds four additional properties:
timestampin milliseconds since epochapplicationholds the value fromapplicationNamelevelis the actual log level of the event.stack_traceholds the stack trace portion of an exception.exceptionholds the.toString()of an exception.
If newrelic.linkingmetadata property is present in an event, it will be unrolled into individual NewRelic properties used for "logs in context".
Install via NuGet
PM> Install-Package Serilog.Sinks.NewRelic.Logs
JSON configuration
It is possible to configure the sink using Serilog.Settings.Configuration by specifying the license key and other desired parameters in appsettings.json:
{
"Serilog": {
"Using": [ "Serilog.Sinks.NewRelic.Logs" ],
"WriteTo": [
{
"Name": "NewRelicLogs",
"Args": {
"applicationName": "NewRelicLogTestSample",
"licenseKey": "58e9892abd3f09d91b0db0d0e9e95628FFFFNRAL"
//... other parameters
}
}
],
"Enrich": [ "FromLogContext", "WithMachineName", "WithThreadId", "WithNewRelicLogsInContext" ]
}
}
Contributors
This code is based on https://github.com/stanisls/serilog-sinks-newreliclogs
Thanks @stanisls and @johnkattenhorn :muscle:
How can I contribute?
Please, refer to CONTRIBUTING
Found something strange or need a new feature?
Open a new Issue following our issue template ISSUE_TEMPLATE
Changelog
See in nuget version history
Did you like it? Please, make a donate :)
if you liked this project, please make a contribution and help to keep this and other initiatives, send me some Satochis.
BTC Wallet: 1G535x1rYdMo9CNdTGK3eG6XJddBHdaqfX
