Crear escuchas personalizadas para auditoría, diagnóstico y seguimiento
Una escucha podrá dirigir el resultado del registro a archivos, el registro de eventos u otros orígenes. Hasta la versión anterior de Unified Service Desk, solo podía usar las escuchas estándar para escribir los registros de auditoría, diagnóstico y seguimiento en Unified Service Desk.
Con Unified Service Desk 2.0, puede configurar las escuchas personalizadas para registrar datos de auditoría, diagnóstico, y seguimiento. Especifique una escucha personalizada mediante el nuevo tipo de control hospedado llamado Control hospedados de escucha que contiene una referencia al ensamblados (archivo .dll) que contiene el código personalizado de escucha.
¿Qué implica la creación escuchas personalizadas?
Crear y usar escuchas personalizadas en Unified Service Desk implica el trabajo conjunto de desarrolladores y administradores. La siguiente tabla describe el proceso.
Paso | ¿Quién lo hace? | Tarea | Vea aquí |
---|---|---|---|
1 | Developer | Escribir el código para la escucha personalizada. | Definir la escucha personalizada para Unified Service Desk |
2 | Developer | Comprimir el ensamblado en un archivo .zip para crear un archivo de personalización para Unified Service Desk. | Preparar la distribución del código de ejemplo |
3 | Desarrollador/administrador | Crear instancias del Control hospedado de escucha para usar el código personalizado de escucha. | Crear instancias del Control hospedado de escucha para usar el código personalizado de escucha |
4 | Administrador | Crear instancias del registro de Configuración de auditoría y diagnóstico para configurar la información de registro auditoría, diagnóstico o seguimiento. | Configurar auditoría y diagnóstico en Unified Service Desk |
5 | Administrador | Crear Archivos de personalización, y adjuntar el archivo .zip creado por el desarrollador en el paso #2. | Distribuir controles hospedaos personalizados con los archivos de personalización |
6 | Administrador | Adjunte el registro Archivos de personalización a la instancia correspondiente de la entidad Configuración. | Asociar auditoría y diagnóstico con una configuración |
Definir la escucha personalizada para Unified Service Desk
Puede combinar el código para la escucha personalizada para el registro de auditoría, diagnóstico, y seguimiento en un solo ensamblado o en diferentes ensamblados. La clase que contiene el código de escucha debe derivarse de:
IAuditService para registros de auditoría
ILogging para los registros de diagnóstico
TraceListener para registros de seguimiento
Nota
Cree una notas de los nombres de espacio de nombres y clase en el código de escucha. Necesitará estos para crear instancias de Control hospedado de escucha para hacer referencia a su código personalizado.
Escucha personalizada para registros de auditoría
El siguiente código de ejemplo demuestra cómo crear una escucha personalizada que escribe datos de auditoría en el archivo USDAudit.log de la carpeta C:\USDLogs.
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);
}
}
}
}
}
Escucha personalizada para registros de diagnóstico
El siguiente código de ejemplo demuestra cómo crear una escucha personalizada que escribe datos de diagnóstico en el archivo USDDiagnostics.log de la carpeta C:\USDLogs.
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);
}
}
}
Escucha personalizada para registros de seguimiento
El siguiente código de ejemplo demuestra cómo crear una escucha personalizada que escribe datos de seguimiento en el archivo USDTraces.log de la carpeta C:\USDLogs.
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);
}
}
}
Preparar la distribución del código de ejemplo
Una vez que ha creado código de escucha personalizada en un archivo de ensamblado (.dll), trabaje con su administrador para distribuir el código en los equipos cliente para que puedan consumir las escuchas personalizadas. Para distribuir los archivos personalizados, comprima los archivos junto con un archivo [Content_Types].xml
en un archivo .zip y proporcione el archivo .zip al administrador para adjuntarlo a un registro de Customization Files
. Consulte Pasos siguientes para el administrador.
El archivo [Content_Types].xml proporciona información de tipo MIME de extensiones de tipos de archivo que se incluyen en el archivo .zip. Normalmente, los tipos de archivo son: .config, .dll, .exe, y .xml. Sin embargo, puede incluir cualquier tipo de archivo que se admite en Windows en el archivo [Content_Types].xml y en el archivo zip.
Este es un ejemplo de archivo [Content_Types].xml con tipos de archivo que suelen usarse para personalizar Unified Service Desk:
<?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>
Crear instancias del Control hospedado de escucha para usar el código personalizado de escucha
El nuevo Control hospedado de escucha en Unified Service Desk permiten hacer referencia y usar el código personalizado de escucha para registrar datos conforme al código. El área Información de ensamblado en la pantalla del nuevo control hospedado le permite especificar los detalles sobre su ensamblado a los que desea que haga referencia el Control hospedado de escucha. Especifique el nombre del ensamblado (.dll) en el campo URI de ensamblado y <AssemblyName>.<ClassName> en el campo Tipo de ensamblado. <ClassName> debe ser la clase que contiene el código.
Por ejemplo, si consideramos el código de ejemplo para escuchas personalizadas anteriormente en este tema y suponemos que todos los códigos de ejemplo se compilan en un único ensamblado denominado SampleCustomUSDListener.dll, debe crear un registro de control hospedado de escucha individual para auditoría, diagnóstico, y seguimiento con los siguientes valores en los campos URI de ensamblado y Tipo de ensamblado.
Auditoría | Diagnóstico | Seguimiento |
---|---|---|
-
URI de ensamblado: SampleCustomUSDListener - Tipo de ensamblado: SampleCustomUSDListener.CustomUSDAuditListener |
-
URI de ensamblado: SampleCustomUSDListener - Tipo de ensamblado: SampleCustomUSDListener.CustomUSDDiagnosticListener |
-
URI de ensamblado: SampleCustomUSDListener - Tipo de ensamblado: SampleCustomUSDListener.CustomUSDTraceListener |
Guarde los registros de controles hospedados de escucha.
Pasos siguientes para el administrador
Como administrador, debe hacer ahora las siguientes dos cosas para usar código personalizado de escucha en su organización:
Cree los registros de Configuración de auditoría y diagnóstico y adjúntele el registro adecuado de control hospedado de escucha. Más información: Configurar la auditoría y diagnósticos en Unified Service Desk
Use el archivo .zip para crear un registro de Archivos de personalización y luego adjúntelo al registro adecuado de Configuración para poder distribuir el ensamblado en los equipos cliente cuando inicien sesión en Dynamics 365 Server con el cliente de Unified Service Desk. Más información: Distribuir controles hospedados personalizados con los archivos de personalización