DEV Community

Cover image for using NLog to send log message to MS Teams Channel via O365 Webhook Connector
Kindeman
Kindeman

Posted on

1

using NLog to send log message to MS Teams Channel via O365 Webhook Connector

Introduction

I recently created a NLog target extension to write log message to Microsoft Teams Channel.
NLog Targets for Microsoft Teams

Sending log messages to Microsoft Teams Channel is a good way to notify the development team or the service desk team if there is anything happened in your application. It helps proactively find out the issues sooner.

Below are some benefits to send log message to MS Teams

  • Log message shows up in Teams instantly
  • All team members get notified
  • Log messages are searchable with Teams

Let's Code

First, let's create a console app using Visual Studio. I named the project as NLogTeams, and targeting .NET 6.
NLog Targets for Microsoft Teams testing console app

Then we need to install the necessary NuGet package. Just right click on the Solution and click on Manage NuGet Packages for Solution.
nuget packages

Type in NLog.Targets.MicrosoftTeams in the search box, and install it. All the depended packages will be installed to the project as well.
NLog Targets MicrosoftTeams NuGet Package

Now let's add a new xml file to the project, and name this new file as nlog.config.
nlog config

Open up the nlog.config file, copy & paste the code below and save.

<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" xsi:schemaLocation="NLog NLog.xsd"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      autoReload="true"
      internalLogFile="internal.log"
      internalLogLevel="Off" >

  <!-- the targets to write to -->
  <targets>
    <!-- write logs to Microsoft Teams -->
    <target xsi:type="MicrosoftTeams, NLog.Targets.MicrosoftTeams"
            name="msTeams"
            WebhookUrl="Put your Teams Webhook URL here"
            ApplicationName="Your Application Name"
            CardTitle="Title - ${level:uppercase=true}: ${date} - [${logger}]"
            layout="[${level:uppercase=true}] ${logger} - ${message} ${all-event-properties}"
    />
  </targets>

  <!-- rules to map from logger name to target -->
  <rules>
    <logger name="*" minlevel="Trace" writeTo="msTeams" />
  </rules>
</nlog>
Enter fullscreen mode Exit fullscreen mode

You need to get the MS Teams Channel webhook URL. Please follow the Microsoft's instruction to create the incoming webhook in Teams.

Once you have the webhook URL, all you need to do is paste it into the nlog.config file.
Image description

And make sure the nlog.config file is always Copy to Output Directory
Image description

Finally, you can now send log message to your Teams Channel. Let's test it by replacing the code in the Program.cs with the code below.


using NLog;
MyClass.TestMethod();

public class MyClass
{
    static ILogger _logger = LogManager.GetCurrentClassLogger();
    public static void TestMethod()
    {
        Console.WriteLine("Hello World!");
        _logger.Info("Log to MS Teams channel like a boss");
    }
}
Enter fullscreen mode Exit fullscreen mode

That's it. And the result would be like this.
Image description

Conclusion

Many businesses are leveraging Microsoft Teams for collaboration. I hope this helps you to integrate your application with Microsoft Teams to receive Error notification easily.

Image of Timescale

Timescale – the developer's data platform for modern apps, built on PostgreSQL

Timescale Cloud is PostgreSQL optimized for speed, scale, and performance. Over 3 million IoT, AI, crypto, and dev tool apps are powered by Timescale. Try it free today! No credit card required.

Try free

Top comments (0)

A Workflow Copilot. Tailored to You.

Pieces.app image

Our desktop app, with its intelligent copilot, streamlines coding by generating snippets, extracting code from screenshots, and accelerating problem-solving.

Read the docs

πŸ‘‹ Kindness is contagious

Engage with a sea of insights in this enlightening article, highly esteemed within the encouraging DEV Community. Programmers of every skill level are invited to participate and enrich our shared knowledge.

A simple "thank you" can uplift someone's spirits. Express your appreciation in the comments section!

On DEV, sharing knowledge smooths our journey and strengthens our community bonds. Found this useful? A brief thank you to the author can mean a lot.

Okay