Freigeben über


Erstellen von benutzerdefinierten Listenern für Überwachen, Diagnose und Ablaufverfolgungen

Mit einem Listener können Sie die Protokollausgabe auf Dateien, das Ereignisprotokoll oder andere Quellen ausrichten. Bis zur vorherigen Version von Unified Service Desk konnten Sie die Standard-Listener nur zum Schreiben von Überwachungs-, Diagnose- und Ablaufverfolgungsprotokollen in Unified Service Desk verwenden.

Mit Unified Service Desk 2.0 können Sie benutzerdefinierte Listener konfigurieren, um Überwachungs-, Diagnose- und Ablaufverfolgungsdaten zu protokollieren. Geben Sie einen benutzerdefinierten Listener an, indem Sie den neuen Typ eines gehosteten Steuerelements mit dem Namen Listener Hosted Control verwenden, das einen Verweis auf die Assembly (.dll Datei) enthält, die den benutzerdefinierten Listenercode enthält.

Was beinhaltet das Erstellen von benutzerdefinierten Listenern?

Beim Erstellen und Verwenden von benutzerdefinierten Listenern in Unified Service Desk arbeiten Entwickler und Administratoren zusammen. In der folgenden Tabelle wird der Prozess beschrieben.

Schritt Wer macht das? Aufgabe Siehe hier
1 Entwickler Schreiben Sie Code für Ihren benutzerdefinierten Listener. Definieren Sie Ihren benutzerdefinierten Listener für Unified Service Desk
2 Entwickler Komprimieren Sie die Assembly in eine .zip Datei, um eine Anpassungsdatei für Unified Service Desk zu erstellen. Vorbereiten der Verteilung des Beispielcodes
3 Entwickler/Administrator Erstellen Sie Instanzen des Gehosteten Listener-Steuerelements zur Verwendung Ihres benutzerdefinierten Listenercodes. Erstellen von Listener-gehosteten Kontrollinstanzen, um Ihren benutzerdefinierten Listenercode zu verwenden
4 Administrator Erstellen Sie Instanzen des Datensatzes Überwachungs- und Diagnoseeinstellungen, um Ihre Überwachungs-, Diagnose- oder Protokollierungsinformationen zu konfigurieren. Konfigurieren von Überwachung und Diagnose in Unified Service Desk
5 Administrator Erstellen Sie Anpassungsdateien und hängen Sie die .zip Datei an, die vom Entwickler in Schritt #2 erstellt wurde. Verteilen von benutzerdefinierten gehosteten Steuerelementen mithilfe von Anpassungsdateien
6 Administrator Fügen Sie den Datensatz "Customization Files " an die entsprechende Instanz der Configuration-Entität an. Auditierung und Diagnose einer Konfiguration zuordnen

Definieren Sie Ihren benutzerdefinierten Listener für Unified Service Desk

Sie können für den benutzerdefinierten Listener den Code für das Überwachen, Diagnostizieren und Ablaufverfolgungsprotokollieren in einer einzelnen Assembly oder in verschiedenen Assemblys kombinieren. Die Klasse, die den Listenercode enthält, muss von Folgendem abgeleitet werden:

Hinweis

Notieren Sie sich den Namespace und die Klassennamen im Listenercode. Sie benötigen diese, um Instanzen des vom Listener gehosteten Steuerelements zu erstellen, die auf Ihren benutzerdefinierten Code verweisen.

Benutzerdefinierter Listener für Überwachungsprotokolle

Der folgende Beispielcode veranschaulicht, wie ein benutzerdefinierter Listener erstellt wird, der Überwachungsdaten in USDAudit.log Datei im Ordner C:\USDLogs schreibt.

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

Benutzerdefinierter Listener für Diagnoseprotokolle

Der folgende Beispielcode veranschaulicht, wie ein benutzerdefinierter Listener erstellt wird, der Diagnosedaten in die USDDiagnostics.log Datei im Ordner C:\USDLogs schreibt.

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

Benutzerdefinierter Listener für Trace-Logs

Der folgende Beispielcode veranschaulicht, wie ein benutzerdefinierter Listener erstellt wird, der Ablaufverfolgungsdaten in die USDTraces.log Datei im Ordner C:\USDLogs schreibt.

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

Vorbereiten der Verteilung des Beispielcodes

Nachdem Sie den benutzerdefinierten Listenercode in eine Assemblydatei (.dll) erstellt haben, arbeiten Sie mit Ihrem Administrator zusammen, um den Code an die Clientcomputer zu verteilen, damit diese Ihre benutzerdefinierten Listener nutzen können. Um Ihre benutzerdefinierten Dateien zu verteilen, komprimieren Sie die Dateien zusammen mit einer [Content_Types].xml Datei in eine .zip Datei und stellen Sie die .zip Datei Ihrem Administrator zur Verfügung, um sie an einen Customization Files Datensatz anzuhängen. Weitere Informationen finden Sie unter Nächste Schritte für Administratoren.

Die.xml Datei [Content_Types] enthält Informationen zum MIME-Typ der Dateityperweiterungen, die in der .zip Datei enthalten sind. In der Regel sind die Dateitypen: .config, .dll, .exeund .xml. Sie können jedoch jeden Dateityp, der unter Windows unterstützt wird, in die.xml-Datei [Content_Types] und in die ZIP-Datei aufnehmen.

Im Folgenden finden Sie ein Beispiel für eine [Content_Types].xml-Datei mit aufgelisteten Dateitypen, die normalerweise zum Anpassen von Unified Service Desk verwendet werden:

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

Erstellen von Listener-gehosteten Kontrollinstanzen, um Ihren benutzerdefinierten Listenercode zu verwenden

Mit dem neuen Listener-gehosteten Steuerelement in Unified Service Desk können Sie auf Ihren benutzerdefinierten Listener-Code verweisen und diesen verwenden, um Daten gemäß Ihrem Code zu protokollieren. Im Bereich Assembly Info auf dem neuen Bildschirm des gehosteten Steuerelements können Sie die Details zu Ihrer Assembly angeben, auf die das gehostete Listener-Steuerelement verweisen soll. Geben Sie den Namen der Assembly (.dll) in das Feld Assembly-URI und <AssemblyName> ein.<ClassName> im Feld Baugruppentyp . ClassName<> sollte die Klasse sein, die den Code enthält.

Wenn wir z. B. den Beispielcode für benutzerdefinierte Listener weiter oben in diesem Thema betrachten und davon ausgehen, dass alle Beispielcodes in einer einzelnen Assembly mit dem Namen SampleCustomUSDListener.dllkompiliert sind, müssen Sie jeweils einen vom Listener gehosteten Steuerelementdatensatz für die Überwachung, Diagnose und Ablaufverfolgung mit den folgenden Werten in den Feldern Assembly-URI und Assemblytyp erstellen.

Überwachung Diagnostik Trace
- Assembly-URI: SampleCustomUSDListener
- Assembly-Typ: SampleCustomUSDListener.CustomUSDAuditListener
- Assembly-URI: SampleCustomUSDListener
- Assembly-Typ: SampleCustomUSDListener.CustomUSDDiagnosticListener
- Assembly-URI: SampleCustomUSDListener
- Assembly-Typ: SampleCustomUSDListener.CustomUSDTraceListener

Speichern Sie die vom Listener gehosteten Steuerelementdatensätze.

Nächste Schritte für Administratoren

Als Administrator sollten Sie jetzt die folgenden zwei Schritte ausführen, um den benutzerdefinierten Listenercode in Ihrer Organisation zu verwenden:

Siehe auch

Erweitern Sie Unified Service Desk