Partilhar via


Registrando em log e definindo entradas de log em um componente de fluxo de dados

Os componentes de fluxo de dados personalizados podem postar mensagens para uma entrada de log existente usando o método PostLogMessage da interface IDTSComponentMetaData100. Eles também podem apresentar informações ao usuário através do método FireInformation ou de métodos semelhantes da interface IDTSComponentMetaData100. Entretanto, essa abordagem leva à sobrecarga pois eventos adicionais são gerados e manipulados, e força o usuário a examinar mensagens informativas detalhadas em busca de mensagens que possam ser do seu interesse. Você pode usar uma entrada de log personalizada, conforme descrito a seguir, para fornecer informações de log personalizadas com rótulos distintos a usuários de seu componente.

Registrando e usando uma entrada de log personalizada

Registrando uma entrada de log personalizada

Para registrar uma entrada de log personalizada a ser usada por seu componente, substitua o método RegisterLogEntries da classe base PipelineComponent. O exemplo a seguir registra uma entrada de log personalizada e fornece um nome e uma descrição.

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

A enumeração DTSLogEntryFrequency fornece uma dica ao tempo de execução sobre a freqüência com que o evento será registrado:

  • DTSLEF_OCCASIONAL: o evento só é registrado às vezes, mas não em toda execução.

  • DTSLEF_CONSISTENT: o evento é registrado em um número constante de horas em toda execução.

  • DTSLEF_PROPORTIONAL: o evento é registrado um determinado número de vezes, que é proporcional à quantidade de trabalho concluído.

O exemplo anterior usa o DTSLEF_CONSISTENT pois o componente espera registrar uma só entrada em cada execução.

Depois de registrar a entrada de log personalizada e adicionar uma instância do seu componente personalizado na superfície do designer de fluxo de dados, a caixa de diálogo Log do designer exibe uma nova entrada de log com o nome "My Custom Component Log Entry" na lista de entradas de log disponíveis.

Registrando uma entrada de log personalizada

Depois do registro da entrada de log personalizada, o componente pode registrar mensagens personalizadas. O exemplo a seguir escreve uma entrada de log personalizada durante o método PreExecute que contém o texto de uma instrução SQL usado pelo 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

Agora, quando o usuário executar o pacote, depois de selecionar "My Custom Component Log Entry" na caixa de diálogo Log, o log conterá uma entrada claramente rotulada como "User::My Custom Component Log Entry". Essa nova entrada de log contém o texto da instrução SQL, o carimbo de data/hora e quaisquer dados adicionais registrados pelo desenvolvedor.

Ícone do Integration Services (pequeno) Fique atualizado com o Integration Services

Para obter os mais recentes downloads, artigos, exemplos e vídeos da Microsoft, bem como soluções selecionadas da comunidade, visite a página Integration Services no MSDN ou TechNet:

Para receber uma notificação automática das atualizações, assine os feeds RSS disponíveis na página.