Protokollieren und Definieren von Protokolleinträgen in einer Datenflusskomponente
Benutzerdefinierte Datenflusskomponenten können mithilfe der PostLogMessage-Methode der IDTSComponentMetaData100-Schnittstelle Nachrichten an einen vorhandenen Protokolleintrag senden. Darüber hinaus können sie auch mithilfe der FireInformation-Methode oder ähnlichen Methoden der IDTSComponentMetaData100-Schnittstelle Informationen für den Benutzer anzeigen. Bei dieser Vorgehensweise entsteht jedoch durch das Auslösen und Behandeln zusätzlicher Ereignisse Arbeitsaufwand, und die Benutzer sind dazu gezwungen, ausführliche Informationsmeldungen zu durchsuchen, um schließlich zu den für sie relevanten Nachrichten zu gelangen. Um für die Benutzer Ihrer Komponente benutzerdefinierte Protokollinformationen mit einer eindeutigen Bezeichnung bereitzustellen, können Sie, wie nachstehend beschrieben, einen benutzerdefinierten Protokolleintrag verwenden.
Registrieren und Verwenden eines benutzerdefinierten Protokolleintrags
Registrieren eines benutzerdefinierten Protokolleintrags
Um einen benutzerdefinierten Protokolleintrag für die Verwendung durch Ihre Komponente zu registrieren, überschreiben Sie die RegisterLogEntries-Methode der PipelineComponent-Basisklasse. Im folgenden Beispiel wird ein benutzerdefinierter Protokolleintrag registriert und ein Name sowie eine Beschreibung bereitgestellt.
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
Die DTSLogEntryFrequency-Enumeration stellt einen Hinweis für die Laufzeit bereit, wie häufig das Ereignis protokolliert wird:
DTSLEF_OCCASIONAL: Ereignis wird nur manchmal protokolliert, nicht während jeder Ausführung.
DTSLEF_CONSISTENT: Ereignis wird während jeder Ausführung mit konstanter Häufigkeit protokolliert.
DTSLEF_PROPORTIONAL: Ereignis wird mit einer zur fertiggestellten Menge der Arbeit proportionalen Häufigkeit protokolliert.
Das oben stehende Beispiel verwendet DTSLEF_CONSISTENT, da die Komponente erwartet, jeweils einen Eintrag pro Ausführung zu protokollieren.
Nach der Registrierung des benutzerdefinierten Protokolleintrags und dem Hinzufügen einer Instanz Ihrer benutzerdefinierten Komponente zur Oberfläche des Datenfluss-Designers zeigt das Dialogfeld Protokollierung im Designer einen neuen Protokolleintrag mit dem Namen "My Custom Component Log Entry" in der Liste der verfügbaren Protokolleinträge an.
Protokollieren eines benutzerdefinierten Protokolleintrags
Nach der Registrierung des benutzerdefinierten Protokolleintrags kann die Komponente jetzt benutzerdefinierte Meldungen protokollieren. Das folgende Beispiel schreibt während der PreExecute-Methode, die den Text einer von der Komponente verwendeten SQL-Anweisung enthält, einen benutzerdefinierten Protokolleintrag.
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
Wenn der Benutzer jetzt das Paket nach Auswählen von "My Custom Component Log Entry" im Dialogfeld Protokollierung ausführt, dann enthält das Protokoll einen Eintrag, der eindeutig mit "User::My Custom Component Log Entry." gekennzeichnet ist. Dieser neue Protokolleintrag enthält den Text der SQL-Anweisung, den Timestamp und alle zusätzlichen Daten, die vom Entwickler protokolliert wurden.
|
Siehe auch