This is an NLog target that sends messages to Loki.
Loki is a horizontally-scalable, highly-available, multi-tenant log aggregation system inspired by Prometheus. It is designed to be very cost effective and easy to operate.
The NLog.Loki NuGet package can be found here. You can install it via one of the following commands below:
NuGet command:
Install-Package NLog.Loki
.NET Core CLI command:
dotnet add package NLog.Loki
Under .NET Core, remember to register NLog.Loki
as an extension assembly with NLog:
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<extensions>
<add assembly="NLog.Loki" />
</extensions>
</nlog>
You can now add a Loki target to your configuration file:
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<target name="loki" xsi:type="loki" endpoint="${environment:LOKI_ENDPOINT_URI}">
<label name="level" layout="${level:lowercase=true}" />
<label name="server" layout="${hostname:lowercase=true}" />
</target>
<rules>
<logger name="*" minlevel="Info" writeTo="loki" />
</rules>
</nlog>
The @endpoint
attribute is a Layout that must ultimately resolve to a fully-qualified absolute URL of the Loki Server when running in a Single Proccess Mode or of the Loki Distributor when running in Microservices Mode. When an invalid URI is encountered, all log messages are silently discarded.
label
elements can be used to enrich messages with additional labels. label/@layout
support usual NLog layout renderers.