Suporte a JSR-047 e Commons Logging

O Log and Trace Analyzer fornece suporte independente e de plug-in para usuários novos e existentes dos seguintes utilitários de registro:

Os detalhes deste suporte estão a seguir.

  1. Capacidade para Exportar Mensagens de Log para um Agente de Registro
    Uma extensão da classe abstrata java.util.logging.Handler no pacote org.eclipse.hyades.logging.java permite a configuração de registradores para exportar mensagens de log para um Agente de Registro.
    Essa rotina de tratamento org.eclipse.hyades.logging.java.LoggingAgentHandler verifica se uma mensagem de log java.util.logging.LogRecord gravada em um registrador pode ser registrada com base no filtro e no nível de registro da rotina de tratamento. Se a mensagem de log tiver que ser registrada, será criado um Agente de Registro com o nome igual ao do registrador que registra a mensagem. A mensagem é formatada utilizando uma org.eclipse.hyades.logging.java.XmlFormatter e gravada no Agente de Registro.
     
  2. Capacidade para Converter Mensagens de Log em XML
    Uma extensão da classe abstrata java.util.logging.Formatter no pacote org.eclipse.hyades.logging.java permite que o org.eclipse.hyades.logging.java.LoggingAgentHandler e outras rotinas de tratamento formatem mensagens de log java.util.logging.LogRecord em XML. Esse formatador org.eclipse.hyades.logging.java.XmlFormatter converte a mensagem java.util.logging.LogRecord em XML equivalente à implementação org.eclipse.hyades.internal.logging.core.XmlGenerator atual, mas excluindo as marcações de host, processo e agente. O XML gerado não é formatado e o nível máximo de aninhamento é definido como 4. Durante a formatação, é verificado se o objeto implementa a interface org.eclipse.hyades.logging.core. IExternalizableToXml. Se implementar, a API externalizeCanonicalXmlString() será chamada no lugar da serialização de XML por meio de introspecção, por motivos de desempenho.

    A seguinte saída ilustra a conversão em XML de uma mensagem de log (a cadeia "Hello World" (nível de registro GRAVE)):
       <LogRecord logging.util.id="java.util.logging.LogRecord_10468105484720000"
       logging.util.agent_idref="org.eclipse.hyades.tests.java.JavaLoggingTest"
       logging.util.MsgLoggerLevel="SEVERE" LoggerName="org.eclipse.hyades.tests.java.JavaLoggingTest"
       ResourceBundleName="null" SequenceNumber="0" SourceClassName="org.eclipse.hyades.tests.java.JavaLoggingTest"
       SourceMethodName="main" Message="Hello World" ThreadID="10"
       Millis="1046810548171">
       	<ResourceBundle Instance_Name="ResourceBundle" Value="null"/>
    	<Level Instance_Name="Level" logging.util.id="java.util.logging.Level_10468105484720001"
       		ResourceBundleName="sun.util.logging.resources.logging" Name="SEVERE"
       		LocalizedName="SEVERE"><Class Instance_Name="Class" logging.util.id="java.lang.Class_10468105484720002"
       		Name="java.util.logging.Level" Type="class" Package="java.util.logging"
       		Modifers="public" Superclass="java.lang.Object" />
       	</Level>
       	<Array Instance_Name="Parameters" Value="null" />
    	<Throwable Instance_Name="Thrown" Value="null" />
    	<Class Instance_Name="Class" logging.util.id="java.lang.Class_10468105484820000"
    	   Name="java.util.logging.LogRecord" Type="class" Package="java.util.logging"
    	   Modifers="public" Superclass="java.lang.Object" />
      </LogRecord>

  3. Capacidade para Inicializar Classes de Extensão em Java Logging APIs Existentes
    Para inicializar as classes de extensão org.eclipse.hyades.logging.java14 nas Java Logging APIs existentes no JDK 1.4.0 e acima, será necessário adicionar as seguintes entradas no arquivo de configuração JRE_HOME\lib\logging.properties antes da inicialização da VM ou antes da API java.util.logging.LogManager.readConfiguration() ser chamada:
    handlers= <suas rotinas de tratamento atuais>, org.eclipse.hyades.logging.java.LoggingAgentHandler
    org.eclipse.hyades.logging.java.LoggingAgentHandler.formatter = org.eclipse.hyades.logging.java.XmlFormatter
    
     

    Outra alternativa é utilizar as classes de extensão de plug-in org.eclipse.hyades.logging.java14 com as Java Logging APIs existentes no JDK 1.4.0 e acima no Registrador (por exemplo, rotina de tratamento) e na Rotina de Tratamento (por exemplo, formatador) através de programação no tempo de execução utilizando as APIs addHandler() e setFormatter(), respectivamente.
     

  4. Capacidade para Incluir um Evento Base Comum em um Registro de Log
    Uma extensão da classe java.util.logging.LogRecord no pacote org.eclipse.hyades.logging.java permite a criação de um registro de log personalizado para incluir um org.eclipse.hyades.logging.events.ICommonBaseEvent em um java.util.logging.LogRecord.

    Essa org.eclipse.hyades.logging.java.CommonBaseEventLogRecord simples estende java.util.logging.LogRecord e contém uma única referência a um org.eclipse.hyades.logging.events.ICommonBaseEvent. Você é responsável pela criação de um novo objeto org.eclipse.hyades.logging.java.CommonBaseEventLogRecord antes de gravar no java.util.logging.Logger.
     
  5. Capacidade para Permitir que a Filtragem de Registros Efetuados não seja Processada pela Classe de Rotina de Tratamento
    É possível filtrar os registros efetuados para que não sejam processados pela classe org.eclipse.hyades.logging.java.LoggingAgentHandler definindo uma implementação da interface java.util.logging.Filter, como a org.eclipse.hyades.logging.java.CommonBaseEventFilter (permite que apenas org.eclipse.hyades.logging.java.CommonBaseEventLogRecord seja registrada com êxito) e o registro de java.util.logging.Level na rotina de tratamento. Esses valores podem ser definidos através de programação no tempo de execução utilizando as APIs setFilter() e setLevel(), respectivamente.

    Outra alternativa é adicionar as seguintes entradas ao arquivo de configuração JRE_HOME\lib\logging.properties antes da inicialização da VM ou antes da API java.util.logging.LogManager.readConfiguration() ser chamada:
    org.eclipse.hyades.logging.java.LoggingAgentHandler.level = <nível>
    org.eclipse.hyades.logging.java.LoggingAgentHandler.filter = org.eclipse.hyades.logging.java.CommonBaseEventFilter
    
       
  6. Capacidade para Criar um Registrador Personalizado para java.lang.Objects e  java.lang.Throwables
    Uma implementação da interface org.apache.commons.logging.Log no pacote org.eclipse.hyades.logging.commons permite a criação de um registrador personalizado para registro de java.lang.Objects e java.lang.Throwables em um Agente de Registro com o nome igual ao do registrador.
    Essa org.eclipse.hyades.logging.commons.Logger verifica se as mensagens de log java.lang.Object e/ou java.lang.Throwable gravadas em um registrador podem ser registradas com base no nível de registro do registrador. Se a mensagem de log tiver que ser registrada, a mensagem de log java.lang.Object e java.lang.Throwable será formatada utilizando uma org.eclipse.hyades.internal.logging.core.XmlGenerator e gravada no Agente de Registro. Durante a formatação, é verificado se o objeto implementa a interface org.eclipse.hyades.logging.core. IExternalizableToXml. Se implementar, a API externalizeCanonicalXmlString() será chamada no lugar da serialização de XML por meio de introspecção, por motivos de desempenho. Para inicializar a classe org.eclipse.hyades.logging.commons.Logger na classe org.apache.commons.logging.LogFactory, será necessário definir a seguinte propriedade do sistema na inicialização da VM:
    -Dorg.apache.commons.logging.Log=org.eclipse.hyades.logging.commons.Logger

Precauções

  1. Se você registrar mensagens de log em cadeia, não poderá incorporar fragmentos em XML à mensagem. Se incorporar fragmentos em XML à mensagem de log, o conteúdo do XML será normalizado e adicionado ao valor do atributo de valor de uma marcação de cadeia. Por exemplo:
    <String >logging.util.agent_idref>=>"AGENT_CREATE.LoggingUtilSample
       logger.1045075846.538" >logging.util.MsgLoggerLevel>=>"FINEST"
       >Value>=>"&lt;tag attribute=&quot;value&quot;/&gt;">/>>
  2. Se você usar os utilitários de registro com.ibm.etools.logging.util independentes, deverá adicionar o caminho para os arquivos JAR hlcore.jar, hparse.jar, hexl.jar e hexr.jar ao caminho de classe do sistema e da VM.

 

Conceitos Relacionados
Modelo Common Base Event

 

(C) Copyright IBM Corporation 2000, 2003. Todos os Direitos Reservados.