Registrazione e definizione di voci di log in un componente del flusso di datiLogging and Defining Log Entries in a Data Flow Component

I componenti personalizzati del flusso di dati possono inserire messaggi in una voce di log esistente tramite il metodo PostLogMessage dell'interfaccia IDTSComponentMetaData100.Custom data flow components can post messages to an existing log entry by using the PostLogMessage method of the IDTSComponentMetaData100 interface. Possono inoltre presentare informazioni all'utente tramite il metodo FireInformation o metodi simili dell'interfaccia IDTSComponentMetaData100.They can also present information to the user by using the FireInformation method or similar methods of the IDTSComponentMetaData100 interface. 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.However, this approach incurs the overhead of raising and handling additional events, and forces the user to sift through verbose informational messages for the messages that may be of interest to them. È possibile utilizzare una voce di log personalizzata, come descritto di seguito, per fornire informazioni di log personalizzate con etichette distinte agli utenti del componente.You can use a custom log entry as described below to provide distinctly labeled custom log information to users of your component.

Registrazione e utilizzo di una voce di log personalizzataRegistering and Using a Custom Log Entry

Registrazione di una voce di log personalizzataRegistering a Custom Log Entry

Per registrare una voce di log personalizzata per il componente, eseguire l'override del metodo RegisterLogEntries della classe di base PipelineComponent.To register a custom log entry for use by your component, override the RegisterLogEntries method of the PipelineComponent base class. Nell'esempio seguente viene registrata una voce di log personalizzata e vengono forniti un nome e una descrizione.The following example registers a custom log entry and provides a name and 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'enumerazione DTSLogEntryFrequency fornisce un hint al runtime sulla frequenza con cui verrà registrato l'evento:The DTSLogEntryFrequency enumeration provides a hint to the runtime about how frequently the event will be logged:

  • DTSLEF_OCCASIONAL: l'evento viene registrato occasionalmente, non durante ogni esecuzione.DTSLEF_OCCASIONAL: Event is logged only sometimes, not during every execution.

  • DTSLEF_CONSISTENT: l'evento viene registrato un numero costante di volte durante ogni esecuzione.DTSLEF_CONSISTENT: Event is logged a constant number of times during every execution.

  • DTSLEF_PROPORTIONAL: l'evento viene registrato un numero di volte proporzionale alla quantità di lavoro completata.DTSLEF_PROPORTIONAL: Event is logged a number of times proportional to the amount of work completed.

    Negli esempi precedenti viene utilizzato DTSLEF_CONSISTENT perché il componente si aspetta di registrare una voce una volta ogni esecuzione.The example above uses DTSLEF_CONSISTENT because the component expects to log an entry once per execution.

    Dopo la registrazione della voce di log personalizzate e aggiungere un'istanza del componente personalizzato all'area della finestra di progettazione del flusso di dati, il registrazione la finestra di dialogo nella finestra di progettazione visualizza una nuova voce di log con il nome "My personalizzate Component Log Entry" nell'elenco di voci di log disponibili.After registering the custom log entry and adding an instance of your custom component to the data flow designer surface, the Logging dialog box in the designer displays a new log entry with the name "My Custom Component Log Entry" in the list of available log entries.

Registrazione in una voce di log personalizzataLogging to a Custom Log Entry

Dopo la registrazione della voce di log personalizzata, il componente può registrare messaggi personalizzati.After registering the custom log entry, the component can now log custom messages. 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.The example below writes a custom log entry during the PreExecute method that contains the text of a SQL statement used by the component.

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 aver selezionato il "My Custom Component Log Entry" nella registrazione la finestra di dialogo, il log conterrà una voce chiaramente identificata come "User:: My Custom Component Log Entry".Now when the user executes the package, after selecting the "My Custom Component Log Entry" in the Logging dialog box, the log will contain an entry clearly labeled as "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.This new log entry contains the text of the SQL statement, the timestamp, and any additional data logged by the developer.

Vedere ancheSee Also

Integration Services ( SSIS ) RegistrazioneIntegration Services (SSIS) Logging