Enregistrement et définition d'entrées de journal dans un composant de flux de données
S’applique à : SQL Server SSIS Integration Runtime dans Azure Data Factory
Les composants de flux de données personnalisés peuvent publier des messages dans une entrée de journal existante à l'aide de la méthode PostLogMessage de l'interface IDTSComponentMetaData100. Ils peuvent également présenter des informations à l'utilisateur en utilisant la méthode FireInformation, ou des méthodes semblables, de l'interface IDTSComponentMetaData100. Toutefois, cette procédure induit une surcharge causée par le déclenchement et la gestion d'événements supplémentaires et force l'utilisateur à passer en revue les messages d'information documentés pour rechercher ceux susceptibles de l'intéresser. Vous pouvez utiliser une entrée de journal personnalisée, tel que décrit ci-dessous, pour fournir aux utilisateurs de votre composant des informations de journal personnalisées étiquetées.
Inscription et utilisation d'une entrée de journal personnalisée
Inscription d'une entrée de journal personnalisée
Pour inscrire une entrée de journal personnalisée destinée à votre composant, substituez la méthode RegisterLogEntries de la classe de base PipelineComponent. L'exemple suivant inscrit une entrée de journal personnalisée et lui fournit un nom et une description.
using Microsoft.SqlServer.Dts.Runtime;
...
private const string MyLogEntryName = "My Custom Component Log Entry";
private const string MyLogEntryDescription = "Log entry from My Custom Component ";
...
public override void RegisterLogEntries()
{
this.LogEntryInfos.Add(MyLogEntryName,
MyLogEntryDescription,
Microsoft.SqlServer.Dts.Runtime.Wrapper.DTSLogEntryFrequency.DTSLEF_CONSISTENT);
}
Imports Microsoft.SqlServer.Dts.Runtime
...
Private Const MyLogEntryName As String = "My Custom Component Log Entry"
Private Const MyLogEntryDescription As String = "Log entry from My Custom Component "
...
Public Overrides Sub RegisterLogEntries()
Me.LogEntryInfos.Add(MyLogEntryName, _
MyLogEntryDescription, _
Microsoft.SqlServer.Dts.Runtime.Wrapper.DTSLogEntryFrequency.DTSLEF_CONSISTENT)
End Sub
L'énumération DTSLogEntryFrequency fournit au Runtime une indication quant à la fréquence de journalisation de l'événement :
DTSLEF_OCCASIONAL : l'événement est enregistré épisodiquement, mais pas à chaque exécution.
DTSLEF_CONSISTENT : l'événement est enregistré un nombre constant de fois pendant chaque exécution.
DTSLEF_PROPORTIONAL : l'événement est enregistré un nombre de fois proportionnel à la quantité de travail accompli.
L'exemple ci-dessus utilise DTSLEF_CONSISTENT car le composant s'attend à enregistrer une entrée une fois par exécution.
Après l’inscription de l’entrée de journal personnalisée et l’ajout d’une instance de votre composant personnalisé à l’aire du concepteur de flux de données, la boîte de dialogue Enregistrement dans le concepteur affiche une nouvelle entrée de journal appelée « Entrée de journal de mon composant personnalisé » dans la liste des entrées de journal disponibles.
Enregistrement dans une entrée de journal personnalisée
Après l'inscription de l'entrée de journal personnalisée, le composant peut désormais enregistrer des messages personnalisés. L'exemple suivant écrit une entrée de journal personnalisée pendant l'exécution de la méthode PreExecute qui contient le texte d'une instruction SQL utilisée par le composant.
public override void PreExecute()
{
DateTime now = DateTime.Now;
byte[] additionalData = null;
this.ComponentMetaData.PostLogMessage(MyLogEntryName,
this.ComponentMetaData.Name,
"Command Sent was: " + myCommand.CommandText,
now, now, 0, ref additionalData);
}
Public Overrides Sub PreExecute()
Dim now As DateTime = DateTime.Now
Dim additionalData As Byte() = Nothing
Me.ComponentMetaData.PostLogMessage(MyLogEntryName, _
Me.ComponentMetaData.Name, _
"Command Sent was: " + myCommand.CommandText, _
now, now, 0, additionalData)
End Sub
À présent, lorsque l'utilisateur exécute le package, après avoir sélectionné l'option « Entrée de journal de mon composant personnalisé » dans la boîte de dialogue Journalisation, le journal contient une entrée clairement étiquetée « Utilisateur ::Entrée de journal de mon composant personnalisé ». Cette nouvelle entrée de journal contient le texte de l'instruction SQL, l'horodateur et toutes les données supplémentaires enregistrées par le développeur.