Condividi tramite


Registrazione e definizione di voci di log in un componente del flusso di dati

I componenti personalizzati del flusso di dati possono inserire messaggi in una voce di log esistente tramite il metodo PostLogMessage dell'interfaccia IDTSComponentMetaData100. Possono inoltre presentare informazioni all'utente tramite il metodo FireInformation o metodi simili dell'interfaccia IDTSComponentMetaData100. Tuttavia, questo approccio genera l'overhead della generazione e gestione di eventi aggiuntivi e forza l'utente a esaminare numerosi messaggi informativi dettagliati alla ricerca di quelli che potrebbero interessarlo. È possibile utilizzare una voce di log personalizzata, come descritto di seguito, per fornire informazioni di log personalizzate con etichette distinte agli utenti del componente.

Registrazione e utilizzo di una voce di log personalizzata

Registrazione di una voce di log personalizzata

Per registrare una voce di log personalizzata per il componente, eseguire l'override del metodo RegisterLogEntries della classe di base PipelineComponent. Nell'esempio seguente viene registrata una voce di log personalizzata e vengono forniti un nome e una descrizione.

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'enumerazione DTSLogEntryFrequency fornisce un hint al runtime sulla frequenza con cui verrà registrato l'evento:

  • DTSLEF_OCCASIONAL: l'evento viene registrato occasionalmente, non durante ogni esecuzione.

  • DTSLEF_CONSISTENT: l'evento viene registrato un numero costante di volte durante ogni esecuzione.

  • DTSLEF_PROPORTIONAL: l'evento viene registrato un numero di volte proporzionale alla quantità di lavoro completata.

Negli esempi precedenti viene utilizzato DTSLEF_CONSISTENT perché il componente si aspetta di registrare una voce una volta ogni esecuzione.

Dopo la registrazione della voce di log personalizzata e l'aggiunta di un'istanza del componente personalizzato nell'area di progettazione del flusso di dati, nella finestra di dialogo Registrazione della finestra di progettazione viene visualizzata una nuove voce di log denominata "My Custom Component Log Entry" nell'elenco di voci di log disponibili.

Registrazione in una voce di log personalizzata

Dopo la registrazione della voce di log personalizzata, il componente può registrare messaggi personalizzati. Nell'esempio seguente viene scritta una voce di log personalizzata durante il metodo PreExecute che contiene il testo di un'istruzione SQL utilizzata dal componente.

    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

A questo punto, quando l'utente esegue il pacchetto, dopo la selezione di "My Custom Component Log Entry" nella finestra di dialogo Registrazione, il log conterrà una voce chiaramente identificata come "User::My Custom Component Log Entry". Questa nuova voce di log contiene il testo dell'istruzione SQL, il timestamp ed eventuali altri dati registrati dallo sviluppatore.

Icona di Integration Services (piccola) Rimanere aggiornati con Integration Services

Per informazioni sui download, gli articoli, gli esempi e i video Microsoft più recenti, nonché sulle soluzioni selezionate dalla community, visitare la pagina Integration Services su MSDN o Technet:

Per ricevere notifica automatica su questi aggiornamenti, sottoscrivere i feed RSS disponibili nella pagina.