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 frequê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 executa o pacote, depois de selecionar "Minha Entrada Personalizada de Log de Componente" na caixa de diálogo Log, o log conterá uma entrada claramente rotulado como "User::Minha Entrada Personalizada de Log de Componente". Esta nova entrada de log contém o texto da instrução SQL, o carimbo de data/hora e outros dados adicionais registrados em log pelo desenvolvedor.
|
Consulte também