Skip to content

hayrullahcansu/nlog-kafka-target

Repository files navigation

nlog-kafka-target

nlog appender for kafka which provides the custom topics pattern and partitions

Nuget GitHub issues Nuget GitHub forks GitHub stars

Supported frameworks

- .NET 5, 6 and 7
- .NET Core 2 and 3
- .NET Standard 2.0+
- .NET Framework 4.5 - 4.8

Getting Started

Step 1: Install NLog.Targets.KafkaAppender package from nuget.org

Install via Package-Manager   Install-Package NLog.Targets.KafkaAppender
Install via .NET CLI          dotnet add package NLog.Targets.KafkaAppender

Step 2: Configure nlog sections

<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      autoReload="true">
  <extensions>
    <add assembly="NLog.Targets.KafkaAppender"/>
  </extensions>
  <targets>
    <target xsi:type="KafkaAppender"
            name="kafka"
            topic="${callsite:className=true:fileName=false:includeSourcePath=false:methodName=true}"
            layout="${longdate}|${level:uppercase=true}|${logger}|${message}"
            brokers="localhost:9092"
            async="false"
            sslCertificateLocation=""
            securityProtocol="plaintext"
            >

    </target>
  </targets>
  <rules>
    <logger name="*" minlevel="Info" writeTo="kafka" />
  </rules>
</nlog>
Param Name Variable Type Requirement Description Default Possible values
name :string yes* Target's name
topic :layout yes* Topic pattern can be layout ${logger}
layout :layout no Layout used to format log messages. `${longdate} ${level:uppercase=true}
brokers :string yes* Kafka brokers with comma-separated
async :boolean no Async or sync mode false
sslCertificateLocation :string no Path to ssl certificate
sslCaLocation :string no Path to ssl CA certificate
sslKeyLocation :string no Path to ssl key file
sslKeyPassword :string no Ssl key password
securityProtocol :enum no Protocol used to communicate with brokers plaintext Plaintext Ssl SaslPlaintext SaslSsl
messageTimeoutMs :int no Limits the time a produced message waits for successful delivery
SaslMechanism :enum no SASL mechanism to use for authentication. Gssapi Plain ScramSha256 ScramSha512 OAuthBearer Gssapi
SaslUsername :string no Simple Authentication and Security Layer Username
SaslPassword :string no Simple Authentication and Security Layer Password

Check documentation about all Layout Renderers

SASL Basic authentication

Scenario: using Confluent Cloud http://developer.confluent.io/get-started/dotnet/#configuration

<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      autoReload="true">
  <extensions>
    <add assembly="NLog.Targets.KafkaAppender"/>
  </extensions>
  <targets>
    <target xsi:type="KafkaAppender"
            name="kafka"
            topic="${callsite:className=true:fileName=false:includeSourcePath=false:methodName=true}"
            layout="${longdate}|${level:uppercase=true}|${logger}|${message}"
            brokers="localhost:9092"
            async="false"
            securityProtocol="SaslPlaintext"
            SaslMechanism="Plain"
            SaslUsername="API-Key"
            SaslPassword="API-secret"
            >

    </target>
  </targets>
  <rules>
    <logger name="*" minlevel="Info" writeTo="kafka" />
  </rules>
</nlog>

Usage

using System;

namespace NLog.Targets.KafkaAppender.Test
{
    class Program
    {
        static void Main(string[] args)
        {
            var logger = NLog.LogManager.GetCurrentClassLogger();
            logger.Error("hello world");
            
            //topic layout:     ${callsite:className=true:fileName=false:includeSourcePath=false:methodName=true}
            //message layout:   ${longdate}|${level:uppercase=true}|${logger}|${message}
            
            //topic output:     NLog.Targets.KafkaAppender.Test.Program.Main
            //message output:   2018-12-05 18:27:46.7382|ERROR|NLog.Targets.KafkaAppender.Test.Program|hello world 
            
        }
    }
}

About

nlog appender for kafka which provides the custom topics pattern and partitions

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages