Supporto JSR-047 e registrazione log comuni

Log and Trace Analyzer fornisce supporto autonomo e con plug-in per i nuovi e vecchi utenti delle seguenti utilità di registrazione:

Di seguito vengono riportate informazioni dettagliate su questo supporto.

  1. Capacità di esportare messaggi di log a un agente di registrazione.
    L'estensione della classe astratta java.util.logging.Handler nel pacchetto org.eclipse.hyades.logging.java consente di configurare i programmi di registrazione per l'esportazione dei messaggi di log ad un agente di registrazione.
    Il gestore org.eclipse.hyades.logging.java.LoggingAgentHandler controlla se i messaggi di log java.util.logging.LogRecord scritti in un programma di registrazione possono essere registrati in base ai filtri del gestore e al livello di registrazione. Se il messaggio di log può essere registrato, viene creato un agente di registrazione avente lo stesso nome del programma che registra il messaggio. Il messaggio viene formattato utilizzando org.eclipse.hyades.logging.java.XmlFormatter e scritto nell'agente di registrazione.
     
  2. Capacità di convertire i messaggi di log in XML
    Un'estensione della classe astratta java.util.logging.Formatter nel pacchetto org.eclipse.hyades.logging.java consente a org.eclipse.hyades.logging.java.LoggingAgentHandler e ad altri gestori di formattare i messaggi di log java.util.logging.LogRecord in XML. Il programma di formattazione org.eclipse.hyades.logging.java.XmlFormatter converte il messaggio java.util.logging.LogRecord nell'XML equivalente nell'implementazione org.eclipse.hyades.internal.logging.core.XmlGenerator, escludendo i tag relativi all'host, al processo e all'agente. L'XML generato non sarà formattato e il livello di nidificazione massimo sarà impostato su 4. Durante la formattazione, l'oggetto viene controllato se implementa l'interfaccia org.eclipse.hyades.logging.core.IExternalizableToXml. In questo caso, invece della serializzazione XML, verrà richiamata l'API externalizeCanonicalXmlString().

    Il seguente output mostra la conversione XML di un messaggio di log (la stringa "Hello World" (livello di registrazione 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. Capacità di eseguire le classe di estensione in API di registrazione Java esistenti
    Per eseguire le classi di estensione org.eclipse.hyades.logging.java14 nelle API di registrazione Java esistenti in JDK 1.4.0 e versioni successive, è necessario aggiungere le seguenti voci al file di configurazione JRE_HOME\lib\logging.properties prima di avviare la VM o prima di richiamare l'API java.util.logging.LogManager.readConfiguration().
    handlers= <your current handlers>, org.eclipse.hyades.logging.java.LoggingAgentHandler
    org.eclipse.hyades.logging.java.LoggingAgentHandler.formatter = org.eclipse.hyades.logging.java.XmlFormatter
    
     

    In alternativa, è possibile utilizzare le classi di estensione del plug-in org.eclipse.hyades.logging.java14 con le API di registrazione esistenti in JDK 1.4.0 e versioni precedenti nel programma di registrazione (ad esempio, handler) e nel gestore (ad esempio, formatter) al runtime, mediante le API addHandler() e setFormatter().
     

  4. Capacità di includere un evento di base comune in un record di log
    Un'estensione della classe java.util.logging.LogRecord nel pacchetto org.eclipse.hyades.logging.java consente di creare un record di log personalizzato, incluso un org.eclipse.hyades.logging.events.ICommonBaseEvent in un java.util.logging.LogRecord.

    org.eclipse.hyades.logging.java.CommonBaseEventLogRecord estende semplicemente java.util.logging.LogRecord e contiene un singolo riferimento a un org.eclipse.hyades.logging.events.ICommonBaseEvent. È necessario creare un nuovo oggetto org.eclipse.hyades.logging.java.CommonBaseEventLogRecord prima di scrivere in java.util.logging.Logger.
     
  5. Capacità di filtrare i record registrati in modo che non vengano elaborati dalla classe handler
    È possibile filtrare i record registrati in modo che non vengano elaborati dalla classe org.eclipse.hyades.logging.java.LoggingAgentHandler, impostando un'implementazione dell'interfaccia java.util.logging.Filter come org.eclipse.hyades.logging.java.CommonBaseEventFilter (fa sì che solo org.eclipse.hyades.logging.java.CommonBaseEventLogRecord venga registrato) e registrando java.util.logging.Level sul gestore. Questi valori possono essere impostati al runtime utilizzando le API setFilter() e setLevel().

    In alternativa, è possibile aggiungere le seguenti voci al file di configurazione JRE_HOME\lib\logging.properties prima di avviare la VM o prima di richiamare l'API java.util.logging.LogManager.readConfiguration():
    org.eclipse.hyades.logging.java.LoggingAgentHandler.level = <level>
    org.eclipse.hyades.logging.java.LoggingAgentHandler.filter = org.eclipse.hyades.logging.java.CommonBaseEventFilter
    
       
  6. Capacità di creare un programma di registrazione personalizzato per java.lang.Object e  java.lang.Throwable
    Un'implementazione dell'interfaccia org.apache.commons.logging.Log nel pacchetto org.eclipse.hyades.logging.commons, consente di creare un programma personalizzato per la registrazione di java.lang.Object e java.lang.Throwable nell'agente di registrazione avente lo stesso nome del programma.
    org.eclipse.hyades.logging.commons.Logger controlla se i messaggi di log java.lang.Object e/o java.lang.Throwable scritti nel programma di registrazione, possono essere registrati in base al livello di registrazione del programma. Se il messaggio di log deve essere registrato, java.lang.Object java.lang.Throwable log verranno formattati mediante org.eclipse.hyades.internal.logging.core.XmlGenerator e verranno scritti nell'agente di registrazione. Durante la formattazione, l'oggetto viene controllato se implementa l'interfaccia org.eclipse.hyades.logging.core.IExternalizableToXml. In questo caso, invece della serializzazione XML, verrà richiamata l'API externalizeCanonicalXmlString(). Per avviare la classe org.eclipse.hyades.logging.commons.Logger nella classe org.apache.commons.logging.LogFactory, è necessario impostare la seguente proprietà di sistema all'avvio della VM:
    -Dorg.apache.commons.logging.Log=org.eclipse.hyades.logging.commons.Logger

Precauzioni

  1. Se si desidera registrare messaggi di log costituiti da stringhe, non inserire frammenti XML nel messaggio. In caso contrario, il contenuto XML verrà normalizzato ed aggiungo al valore dell'attributo dei tag delle stringhe. Ad esempio,
    <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 si desidera utilizzare l'utilità di registrazione autonoma com.ibm.etools.logging.util, sarà necessario aggiungere il percorso dei file JAR hlcore.jar, hparse.jar, hexl.jar e hexr.jar al sistema e al percorso della classe VM.

 

Argomenti correlati
Modello eventi di base comuni

 

(C) Copyright IBM Corporation 2000, 2003. Tutti i diritti riservati.