Instruções passo a passo: criando ouvintes de log personalizados (Visual Basic)

Estas instruções passo a passo demonstram como criar um ouvinte de log personalizado e configurá-lo para ouvir a saída do objeto My.Application.Log.

Introdução

Ouvintes de log devem herdar da classe TraceListener.

Para criar o ouvinte

  • Em seu aplicativo, crie uma classe denominada SimpleListener que herda de TraceListener.

    Public Class SimpleListener
        Inherits System.Diagnostics.TraceListener
    
        <Security.Permissions.HostProtection(Synchronization:=True)>
        Public Overloads Overrides Sub Write(ByVal message As String)
            MsgBox("Write: " & message)
        End Sub
    
        <Security.Permissions.HostProtection(Synchronization:=True)>
        Public Overloads Overrides Sub WriteLine(ByVal message As String)
            MsgBox("WriteLine: " & message)
        End Sub
    End Class
    

    Os métodos Write e WriteLine, exigidos pela classe base, chamam MsgBox para exibir sua entrada.

    O atributo HostProtectionAttribute é aplicado aos métodos Write e WriteLine para que seus atributos coincidam com os métodos da classe base. O atributo HostProtectionAttribute permite que o host que executa o código determine que o código expõe a sincronização de proteção de host.

    Observação

    O atributo HostProtectionAttribute é eficaz somente em aplicativos não gerenciados que hospedam o Common Language Runtime e implementam a proteção de host, como o SQL Server.

Para garantir que o My.Application.Log use o ouvinte de log, você deve nomear fortemente o assembly que contém o ouvinte de log.

O procedimento seguinte fornece algumas etapas simples para criar um assembly de ouvinte de log de nome forte. Para obter mais informações, consulte Criando e usando assemblies de nomes fortes.

Para nomear fortemente o assembly de ouvinte de log

  1. Selecione um projeto no Gerenciador de Soluções. No menu Projeto, escolha Propriedades.

  2. Clique na guia Assinatura .

  3. Marque a caixa Assinar o assembly.

  4. Selecione <Novo> da lista suspensa Escolha um arquivo de chave de nome forte.

    A caixa de diálogo Criar Chave de Nome Forte é aberta.

  5. Forneça um nome para o arquivo de chaves na caixa Nome de arquivo de chaves.

  6. Digite uma senha nas caixas Digite a senha e Confirmar senha caixas.

  7. Clique em OK.

  8. Recompile o aplicativo.

Adicionando o ouvinte

Agora que o assembly tem um nome forte, você precisa determinar o nome forte do ouvinte para que My.Application.Log use seu ouvinte de log.

O formato de um tipo de nome forte é o seguinte.

<nome do tipo>, <nome do assembly>, <número de versão>, <cultura>>, <nome forte>

Para determinar o nome forte do ouvinte

  • O código a seguir mostra como determinar o tipo de nome forte de SimpleListener.

    Public Sub DisplaySimpleListenerStrongName()
        Dim t As Type = GetType(SimpleListener)
        MsgBox(t.FullName & ", " & t.Assembly.FullName)
    End Sub
    

    O nome forte do tipo depende de seu projeto.

Com o nome forte, você pode adicionar o ouvinte à coleção de ouvintes de log My.Application.Log.

Para adicionar o ouvinte a My.Application.Log

  1. Clique com o botão direito do mouse em app.config no Gerenciador de Soluções e escolha Abrir.

    -ou-

    Se houver um arquivo app.config:

    1. No menu Projeto, escolha Adicionar Novo Item.

    2. Na caixa de diálogo Adicionar novo item, escolha Arquivo de configuração de aplicativo.

    3. Clique em Adicionar.

  2. Localize a seção <listeners>, na seção <source> com o name atributo "DefaultSource", localizado na seção <sources>. A seção <sources> está localizada na seção <system.diagnostics>, na seção <configuration> superior.

  3. Adicione esse elemento à seção <listeners>:

    <add name="SimpleLog" />
    
  4. Localize a seção <sharedListeners>, na seção <system.diagnostics>, na seção <configuration> superior.

  5. Adicione esse elemento a essa seção <sharedListeners>:

    <add name="SimpleLog" type="SimpleLogStrongName" />
    

    Altere o valor de SimpleLogStrongName para ser o nome forte do ouvinte.

Confira também