NLog를 사용하여 O365 Webhook 커넥터를 통해 MS Teams 채널에 로그 메시지 보내기

소개



최근에 Microsoft Teams 채널에 로그 메시지를 쓰기 위해 NLog 대상 확장을 만들었습니다.
NLog Targets for Microsoft Teams

Microsoft Teams 채널에 로그 메시지를 보내는 것은 애플리케이션에 문제가 발생한 경우 개발 팀이나 서비스 데스크 팀에 알리는 좋은 방법입니다. 문제를 사전 예방적으로 더 빨리 찾는 데 도움이 됩니다.

다음은 MS Teams에 로그 메시지를 보내는 몇 가지 이점입니다.
  • 로그 메시지가 Teams에 즉시 표시됨
  • 모든 팀 구성원에게 알림이 전송됨
  • 팀에서 로그 메시지를 검색할 수 있음

  • 코딩하자



    먼저 Visual Studio를 사용하여 콘솔 앱을 만들어 보겠습니다. 프로젝트 이름을 NLogTeams로 지정하고 .NET 6을 대상으로 했습니다.


    그런 다음 필요한 NuGet 패키지를 설치해야 합니다. 솔루션을 마우스 오른쪽 단추로 클릭하고 솔루션용 NuGet 패키지 관리를 클릭하십시오.


    검색창에 NLog.Targets.MicrosoftTeams를 입력하고 설치합니다. 종속된 모든 패키지도 프로젝트에 설치됩니다.


    이제 새 xml 파일을 프로젝트에 추가하고 이 새 파일의 이름을 nlog.config로 지정하겠습니다.

    nlog.config 파일을 열고 아래 코드를 복사하여 붙여넣고 저장합니다.

    <?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>
    


    MS Teams 채널 웹후크 URL을 가져와야 합니다. Microsoft의 지침에 따라 Teams에서 수신 웹후크를 생성하십시오. Once you have the webhook URL, all you need to do is paste it into the nlog.config file.


    그리고 nlog.config 파일이 항상 Copy to Output Directory인지 확인하십시오.


    마지막으로 이제 팀 채널에 로그 메시지를 보낼 수 있습니다. Program.cs 안의 코드를 아래의 코드로 바꿔서 테스트해 보자.

    
    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");
        }
    }
    


    그게 다야. 결과는 다음과 같습니다.


    결론



    많은 기업에서 협업을 위해 Microsoft Teams를 활용하고 있습니다. 이것이 오류 알림을 쉽게 받을 수 있도록 응용 프로그램을 Microsoft Teams와 통합하는 데 도움이 되기를 바랍니다.

    좋은 웹페이지 즐겨찾기