Supporto JSR-047 e registrazione log comuni
L'Analizzatore di log e di traccia fornisce supporto autonomo e con plugin 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 log.
L'estensione della classe astratta java.util.logging.Handler nel pacchetto
org.eclipse.hyades.logging.java consente di configurare i logger per
l'esportazione dei messaggi di log ad un agente di registrazione log.
Il gestore org.eclipse.hyades.logging.java.LoggingAgentHandler controlla se
i messaggi di log java.util.logging.LogRecord scritti in un logger
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 log 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 log.
- 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="AGENT_CREATE.org.eclipse.hyades.tests.java.JavaLoggingTest.1063298146.542"
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 plugin
org.eclipse.hyades.logging.java14 con le API di registrazione esistenti in JDK 1.4.0
e versioni precedenti nel logger (ad esempio, handler) e nel gestore (ad esempio,
formatter) al runtime, mediante le API addHandler() e setFormatter().
- Capacità di includere un Common Base Event 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.cbe.CommonBaseEvent in un
java.util.logging.LogRecord.
Questo org.eclipse.hyades.logging.java.CommonBaseEventLogRecord estende semplicemente
java.util.logging.LogRecord e contiene un singolo riferimento a un
org.eclipse.hyades.logging.events.cbe.CommonBaseEvent. È 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 logger personalizzato per java.lang.Object
e java.lang.Throwables
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 log 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 logger,
possono essere registrati in base al livello di registrazione del programma. Se il messaggio di log deve essere registrato, i messaggi java.lang.Object e java.lang.Throwable
log verranno formattati mediante un
org.eclipse.hyades.internal.logging.core.XmlGenerator e verranno scritti nell'agente di registrazione log. 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 Common Base Event
(C) Copyright IBM Corporation 2000, 2004. Tutti i diritti riservati.