다음을 통해 공유


감사, 진단 및 추적을 위한 사용자 지정 수신기 만들기

 

게시 날짜: 2016년 11월

적용 대상: Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2013, Dynamics CRM 2015, Dynamics CRM 2016

수신기를 사용하면 대상 로그 파일, 이벤트 로그 또는 기타 소스를 출력할 수 있습니다.Unified Service Desk의 이전 버전까지는 Unified Service Desk에서 감사, 진단 및 추적 로그를 끄려면 표준 수신기만 사용할 수 있었습니다.

Unified Service Desk 2.0에서는 데이터 감사, 진단 및 추적을 기록하도록 사용자 지정 수신기를 구성할 수 있습니다. 사용자 지정 수신기 코드를 포함하고 있는 어셈블리(.dll 파일)에 대한 참조가 포함된 수신기 호스팅된 컨트롤이라는 새로운 유형의 호스팅된 컨트롤을 사용하여 사용자 지정 수신기를 지정합니다.

이 항목의 내용

사용자 지정 수신기는 무엇을 만드는 것입니까?

Unified Service Desk용 사용자 지정 수신기 정의

샘플 코드의 배포를 위한 준비

수신기 호스팅된 컨트롤 인스턴스를 만들어 수신기 사용자 지정 코드를 사용합니다.

관리자를 위한 다음 단계

사용자 지정 수신기는 무엇을 만드는 것입니까?

Unified Service Desk에서 사용자 지정 수신기를 만들고 사용하려면 개발자와 관리자가 함께 작업해야 합니다. 다음 표는 프로세스의 개요를 보여줍니다.

단계

작업자

작업

표시되는 위치

1

개발자

사용자 지정 수신기에 대한 코드를 작성합니다.

Unified Service Desk용 사용자 지정 수신기 정의

2

개발자

어셈블리를 .zip 파일에 압축하여 Unified Service Desk를 위한 사용자 지정 파일을 만듭니다.

샘플 코드의 배포를 위한 준비

3

개발자/관리자

수신기 호스트 컨트롤의 인스턴스를 만들어 수신기 사용자 지정 코드를 사용합니다.

수신기 호스팅된 컨트롤 인스턴스를 만들어 수신기 사용자 지정 코드를 사용합니다.

4

관리자

감사 및 진단 설정 레코드의 인스턴스를 만들어 감사, 진단을 구성하거나 로깅 정보를 추적합니다.

TechNet: Unified Service Desk에서 감사 및 진단 구성

5

관리자

사용자 지정 파일을 만들고 2단계에서 개발자가 만든 .zip 파일을 첨부합니다.

TechNet: 사용자 지정 파일을 사용하여 사용자 지정 호스팅된 컨트롤 배포

6

관리자

사용자 지정 파일 레코드를 구성 엔터티의 적절한 인스턴스에 첨부합니다.

TechNet: 감사 및 진단을 구성에 연결

Unified Service Desk용 사용자 지정 수신기 정의

감사, 진단 및 추적 로깅을 위한 사용자 지정 수신기의 코드를 단일 어셈블리 또는 여러 어셈블리에 결합할 수 있습니다. 수신기 코드를 포함하는 클래스는 다음에서 파생되어야 합니다.

참고

수신기 코드에 네임스페이스와 클래스 이름을 기록합니다. 이것을 사용하여 사용자 지정 코드를 참조하는 수신기 호스팅된 컨트롤의 인스턴스를 만들어야 합니다.

감사 로그에 대한 사용자 지정 수신기

다음 예제 코드는 C:\USDLogs 폴더에서 USDAudit.log 파일에 감사 데이터를 쓰는 사용자 지정 수신기를 만드는 방법을 보여줍니다.

using Microsoft.Uii.AifServices;
using Microsoft.Uii.Common.Entities;
using Microsoft.Uii.Common.Logging;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace SampleCustomUSDListener
{
    public class CustomUSDAuditListener : IAuditService
    {
        public void SaveAudit(IEnumerable<Microsoft.Uii.Common.Entities.LogData> logCache)
        {
            LogToFile(logCache);
        }

        private void LogToFile(IEnumerable<LogData> logCache)
        {
            string filename = Path.GetPathRoot(Environment.SystemDirectory) + "USDLogs\\USDAudit.log";
            foreach (var item in logCache)
            {
                try
                {
                    File.AppendAllText(filename, item.GetLogData());
                }
                catch (Exception ex)
                { 
                    Logging.Error("USD",ex.StackTrace); 
                }
            }
        }
    }
}

진단 로그에 대한 사용자 지정 수신기

다음 예제 코드는 C:\USDLogs 폴더에서 USDDiagnostics.log 파일에 진단 데이터를 쓰는 사용자 지정 수신기를 만드는 방법을 보여줍니다.

using Microsoft.Uii.Common.Logging;
using Microsoft.Uii.Common.Entities;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Configuration;
using System.Threading.Tasks;

namespace SampleCustomUSDListener
{
    class CustomUSDDiagnosticListener : ILogging
    {
        string filename = Path.GetPathRoot(Environment.SystemDirectory) + "USDLogs\\USDDiagnostics.log";
        public void Error(string applicationName, string message, string advanced)
        {
            File.AppendAllText(filename, "\nError is logged\n" + "\nApplication Name:\n" + applicationName + "\nMessage:\n" + message + "\nAdvanced:\n" + advanced);
        }

        public void Information(string applicationName, string message)
        {
            File.AppendAllText(filename, "\nInformation is logged\n" + "\nApplication Name:\n" + applicationName + "\nMessage:\n" + message);
        }

        public void Initialize(string name, System.Collections.Specialized.NameValueCollection configValue)
        {
            //Not needed
        }

        public bool ShowErrors
        {
            get
            {
                throw new NotImplementedException();
            }
            set
            {
                throw new NotImplementedException();
            }
        }

        public string Tag
        {
            get
            {
                throw new NotImplementedException();
            }
            set
            {
                throw new NotImplementedException();
            }
        }

        public void Trace(string applicationName, string message)
        {
            File.AppendAllText(filename, "\nVerbose is logged\n" + "\nApplication Name:\n" + applicationName + "\nMessage:\n" + message);
        }

        public void Warn(string applicationName, string message)
        {
            File.AppendAllText(filename, "\nWarning is logged\n" + "\nApplication Name:\n" + applicationName + "\nMessage:\n" + message);
        }
    }
}

추적 로그에 대한 사용자 지정 수신기

다음 예제 코드는 C:\USDLogs 폴더에서 USDTraces.log 파일에 추적 데이터를 쓰는 사용자 지정 수신기를 만드는 방법을 보여줍니다.

using System;
using System.Diagnostics;
using System.IO;

namespace SampleCustomUSDListener
{
    class CustomUSDTraceListener : TraceListener
    {
        string filename = Path.GetPathRoot(Environment.SystemDirectory) + "USDLogs\\USDTraces.log";
        public override void Write(string message)
        {
            File.AppendAllText(filename, message);
        }

        public override void WriteLine(string message)
        {
            File.AppendAllText(filename, message);
        }
    }
}

샘플 코드의 배포를 위한 준비

사용자 지정 수신기 코드를 어셈블리(.dll) 파일에 작성하고 관리자와 함께 사용자 지정 수신기를 사용할 수 있도록 클라이언트 컴퓨터에 코드를 배포합니다. 사용자 지정 파일을 배포하려면 [Content_Types].xml 파일과 함께 파일을 .zip 파일에 압축하고 .zip 파일을 관리자에게 제공하여 Customization Files 레코드에 첨부하도록 합니다.관리자를 위한 다음 단계를 참조하십시오.

[콘텐츠_유형].xml 파일은 .zip 파일에 포함되는 파일 유형 확장의 MIME 유형 정보를 제공합니다. 일반적으로 파일 유형은 .config, .dll, .exe 및 .xml입니다. 그러나 [Content_Types].xml 파일 및 zip 파일에 Windows에서 지원되는 모든 파일 유형을 포함할 수 있습니다.

다음은 일반적으로 Unified Service Desk를 사용자 지정하는 데 사용되는 파일 유형이 나열된 샘플 [Content_Types].xml 파일입니다.

<?xml version="1.0" encoding="utf-8"?>
<Types xmlns="https://schemas.openxmlformats.org/package/2006/content-types">
  <Default Extension="config" ContentType="application/octet-stream" />
  <Default Extension="dll" ContentType="application/octet-stream" />
  <Default Extension="exe" ContentType="application/octet-stream" />
  <Default Extension="xml" ContentType="application/octet-stream" />
</Types>

수신기 호스팅된 컨트롤 인스턴스를 만들어 수신기 사용자 지정 코드를 사용합니다.

Unified Service Desk의 새로운 수신기 호스팅형 컨트롤을 사용하면 코드당 로깅 데이터를 위해 사용자 지정 수신기 코드를 참조하고 사용할 수 있습니다. 새로운 호스팅된 컨트롤 화면의 어셈블리 정보 영역을 사용하면 수신기 호스팅된 컨트롤에서 참조하도록 하려는 어셈블리에 대한 정보를 지정할 수 있습니다.어셈블리 URI 필드 및 어셈블리 유형<AssemblyName>.<ClassName> 필드에 어셈블리(.dll) 이름을 지정합니다.*<ClassName>*은 사용자 코드를 포함하는 클래스여야 합니다.

수신기 호스팅된 컨트롤 만들기

예를 들어, 이 항목의 앞에서 사용자 지정 수신기의 샘플 코드를 고려하고 모든 샘플 코드가 SampleCustomUSDListener.dll라는 단일 어셈블리로 컴파일된다고 가정한 경우 어셈블리 URI어셈블리 유형 필드에서 다음 값을 사용하여 감사, 진단 및 추적을 위해 각각 수신기 호스팅된 컨트롤 레코드를 만들어야 합니다.

감사

진단

추적

  • 어셈블리 URI: SampleCustomUSDListener

  • 어셈블리 유형: SampleCustomUSDListener.CustomUSDAuditListener

  • 어셈블리 URI: SampleCustomUSDListener

  • 어셈블리 유형: SampleCustomUSDListener.CustomUSDDiagnosticListener

  • 어셈블리 URI: SampleCustomUSDListener

  • 어셈블리 유형: SampleCustomUSDListener.CustomUSDTraceListener

수신기 호스팅된 컨트롤 레코드를 저장합니다.

관리자를 위한 다음 단계

관리자는 이제 조직에서 사용자 지정 수신기 코드를 사용하기 위해 다음 두 가지를 수행하도록 해야 합니다.

참고 항목

Unified Service Desk 확장

Unified Service Desk 2.0

© 2017 Microsoft. All rights reserved. 저작권 정보