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:
- API di registrazione log Java JSR-047
- Registrazione log comuni
Di seguito vengono riportate informazioni dettagliate su questo supporto.
- 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.
- 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>
- 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().
- 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.
- 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
- 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
- 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>=>"<tag attribute="value"/>">/>>
- 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.