Nodinite Serilog sink using Nodinite Log API
Use the Nodinite Serilog sink for the Nodinite Log API with your full framework and .NET Core applications to enable end-to-end tracking. Typical examples include Microsoft Azure functions built with .NET (usually CSharp). Nodinite supports payload Logging and removes the obstacle that Application Insights logging imposes on message size.
Important
Set OriginalMessageType for searchable business data - The Log API sink sends your log events synchronously to the Nodinite Log API for immediate processing. Without proper Message Types, your logged events won't have business data extraction via Search Field Expressions, preventing features like Non-Events Monitoring, Business Process Modeling (BPM), and business-data searches in Log Views from functioning. Always include
OriginalMessageTypein your logging code before deploying to production. Log API sink provides synchronous logging with immediate confirmation but requires direct network connectivity to Nodinite.
Warning
BREAKING CHANGE in version 7.10.9 - When you update the
Nodinite.Serilog.ApiSinkpackage to version 7.10.9 or later, you must change theNodiniteApiUrlsetting to the complete Log Event address of your Log API, ending in/api/LogEvent. The sink no longer adds anything to the address you configure. Read more in Log Event address (NodiniteApiUrl).
Logging Options
Choose one of the following articles based on the solution you want to enable Logging for:
❔'How To Start Logging With Microsoft.Extensions.Logging.ILogger in Azure Functions'
❔'How To Start Logging With Serilog'
Connection Options
Regardless of your choice, include the following configuration in your appsettings.json file:
Tip
The Settings section is shared by all Nodinite Serilog sinks. Read more at Settings Section (appsettings.json)
Log Event address (NodiniteApiUrl)
New 7.10.9
The Log API sink posts each Log Event to the address in the NodiniteApiUrl setting exactly as you configure it (a trailing / is ignored). Set it to the Log Event address of your environment's Log API, in the Nodinite v7 format https://{host}:{port}/LogAPI/api/LogEvent. The host and port come from your environment's settings in the Nodinite Portal (Servers step).
Breaking change in 7.10.9
Versions before 7.10.9 appended LogEvent/LogEvent to the configured NodiniteApiUrl. The Nodinite v7 Log API doesn't serve that route, so earlier versions of the sink don't work; the Log API answers with HTTP 404.
When you update Nodinite.Serilog.ApiSink to version 7.10.9 or later:
- Find every place you set
NodiniteApiUrl: in code, and in theArgsof yourappsettings.json. - Change the value to the complete Log Event address (see above).
- If your current value ends in
/LogAPI/api/, addLogEventto the end of it.
| Current value | 7.10.9 and later |
|---|---|
https://fancysrv01:50002/LogAPI/api/ |
https://fancysrv01:50002/LogAPI/api/LogEvent |
Configure NodiniteApiUrl in appsettings.json
{
"Serilog": {
"Using": [ "Nodinite.Serilog.ApiSink" ],
"WriteTo": [
{
"Name": "NodiniteApiSink",
"Args": {
"NodiniteApiUrl": "https://fancysrv01:50002/LogAPI/api/LogEvent",
"Settings": {
...
}
}
}
]
}
}
Configure NodiniteApiUrl in code
var nodiniteSettings = new NodiniteLogEventSettings
{
LogAgentValueId = 503,
EndPointName = "Timers",
EndPointUri = "https://timers.contoso.com/",
EndPointDirection = 0,
EndPointTypeId = 0,
OriginalMessageTypeName = "Timers.LogEvent/1.0",
ProcessingUser = "TIMERS",
ProcessName = "Timers",
ProcessingMachineName = "BROWSER",
ProcessingModuleName = "Timers",
ProcessingModuleType = "BlazorWebAssembly"
};
var logger = new LoggerConfiguration()
.WriteTo.NodiniteApiSink("https://fancysrv01:50002/LogAPI/api/LogEvent", nodiniteSettings)
.CreateLogger();
builder.Services.AddSingleton<Serilog.ILogger>(logger);
Replace the host and port with the values of your environment's Log API.
Rejected Log Events
New 7.10.9
When the Log API refuses a Log Event, for example because of a wrong NodiniteApiUrl, the sink reports the HTTP status and the Log API's response:
- With
WriteTo, Serilog writes the error to its SelfLog. Enable it during troubleshooting, for example withSerilog.Debugging.SelfLog.Enable(Console.Error);. - With
AuditTo, your code receives the error.
Tip
The application opens every connection outbound. For the ports and hostnames to allow, see the firewall settings for the Nodinite Serilog sinks.
Next Steps
❔'How To Start Logging With Microsoft.Extensions.Logging.ILogger in Azure Functions'
❔'How To Start Logging With Serilog'
Related Topics
Message Types - Critical for Search Field extraction from Log API sink events
Search Field Expressions - Extract business data from logged messages
Log Views - Search logged data by business identifiers
Non-Events Monitoring - Track message volumes and detect missing messages
Business Process Modeling (BPM) - End-to-end transaction tracking
Reduce Azure Functions Logging Costs - Lower the Azure cost of logging Azure Functions
Reduce Azure Logic Apps Run History Retention to Lower TCO - The same approach for Logic Apps
Reduce Azure API Management Logging Costs - The same approach for API Management