Support de journalisation JSR-047 et Commons
L'analyseur de fichiers journaux et trace fournit un support autonome et plug-in pour les utilisateurs nouveaux et existants des utilitaires de journalisation suivants :
- API de journalisation Java JSR-047
- Journalisation Commons
Les caractéristiques de ce support sont décrites ci-après.
- Exportation de messages de journal vers un agent de journalisation
Une extension de la classe abstraite java.util.logging.Handler dans le package org.eclipse.hyades.logging.java permet la configuration des consignateurs pour l'exportation de messages de journal vers un agent de journalisation.
Ce gestionnaire org.eclipse.hyades.logging.java.LoggingAgentHandler vérifie si un message de journal java.util.logging.LogRecord enregistré dans un consignateur peut être consigné en fonction du filtre et du niveau de consignation du gestionnaire. Si le message du journal doit être consigné, un agent de journalisation est créé dont le nom est identique à celui du consignateur qui consigne le message. Le message est mis en forme à l'aide d'un org.eclipse.hyades.logging.java.XmlFormatter et enregistré dans l'agent de journalisation.
- Conversion des messages de journal en XML
Une extension de la classe abstraite java.util.logging.Formatter dans le package org.eclipse.hyades.logging.java permet à org.eclipse.hyades.logging.java.LoggingAgentHandler et à d'autres gestionnaires de formater les messages de journal java.util.logging.LogRecord en XML. Ce module de formatage org.eclipse.hyades.logging.java.XmlFormatter convertit le message java.util.logging.LogRecord en XML équivalent à l'implémentation org.eclipse.hyades.internal.logging.core.XmlGenerator en cours, mais à l'exclusion des balises host, process et agent. Le XML généré n'est pas mis en forme et le niveau d'imbrication maximal est paramétré sur 4. Lors de la mise en forme, l'objet est vérifié pour savoir s'il implémente l'interface org.eclipse.hyades.logging.core.
IExternalizableToXml. Si tel est le cas, l'API externalizeCanonicalXmlString() est appelée à la place de la sérialisation XML au moyen d'une introspection pour des raisons de performances.
La sortie suivante illustre la conversion XML d'un message de journal (la chaîne
"Hello World" (niveau de consignation SEVERE)) :
<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>
- Amorçage des classes d'extension vers des API de journalisation JAVA
Pour amorcer les classes d'extension org.eclipse.hyades.logging.java14 vers les API de journalisation Java existantes dans JDK version 1.4.0 et supérieure, vous devez ajouter les entrées suivantes dans le fichier de configuration JRE_HOME\lib\logging.properties avant de démarrer VM ou avant d'appeler l'API
java.util.logging.LogManager.readConfiguration() :
handlers= <gestionnaires en cours>, org.eclipse.hyades.logging.java.LoggingAgentHandler
org.eclipse.hyades.logging.java.LoggingAgentHandler.formatter = org.eclipse.hyades.logging.java.XmlFormatter
Vous avez également la possibilité d'utiliser, au moyen d'un programme lors de l'exécution, les classes d'extension de plug-in org.eclipse.hyades.logging.java14 avec les API de journalisation Java existantes de JDK version 1.4.0 et supérieure dans le consignateur (par exemple, gestionnaire) et dans le gestionnaire (par exemple, module de formatage), à l'aide des API addHandler() et setFormatter() respectivement.
- Inclusion d'un Common Base Event dans un enregistrement de journal
Une extension de la classe java.util.logging.LogRecord dans le package
org.eclipse.hyades.logging.java permet de créer un enregistrement de journal
personnalisé pour inclure un org.eclipse.hyades.logging.events.ICommonBaseEvent dans un
java.util.logging.LogRecord.
Cet objet org.eclipse.hyades.logging.java.CommonBaseEventLogRecord
permet l'extension de java.util.logging.LogRecord et contient une référence unique à un org.eclipse.hyades.logging.events.ICommonBaseEvent. Vous êtes responsable de la création d'un objet org.eclipse.hyades.logging.java.CommonBaseEventLogRecord avant d'écrire dans
java.util.logging.Logger.
- Filtrage des enregistrements consignés de sorte qu'ils ne soient pas traités par la classe de gestionnaire
Vous pouvez filtrer les enregistrements consignés de sorte qu'ils ne soient pas traités par la classe org.eclipse.hyades.logging.java.LoggingAgentHandler, en définissant une implémentation de l'interface java.util.logging.Filter, telle que org.eclipse.hyades.logging.java.CommonBaseEventFilter (ne permet qu'à l'enregistrement org.eclipse.hyades.logging.java.CommonBaseEventLogRecord d'être correctement consigné) et en consignant java.util.logging.Level sur le gestionnaire. Ces valeurs peuvent être définies par programme au moment de l'exécution, à l'aide des API setFilter() et setLevel(), respectivement.
Vous avez également la possibilité d'ajouter les entrées suivantes dans le fichier de configuration JRE_HOME\lib\logging.properties avant de démarrer VM ou avant d'appeler l'API java.util.logging.LogManager.readConfiguration() :
org.eclipse.hyades.logging.java.LoggingAgentHandler.level = <niveau>
org.eclipse.hyades.logging.java.LoggingAgentHandler.filter = org.eclipse.hyades.logging.java.CommonBaseEventFilter
- Création d'un consignateur personnalisé pour les java.lang.Object et les java.lang.Throwable
Une implémentation de l'interface org.apache.commons.logging.Log
dans le package org.eclipse.hyades.logging.commons permet de créer un consignateur personnalisé pour la consignation des java.lang.Object et
java.lang.Throwable dans un agent de journalisation portant le même nom que le consignateur.
Ce consignateur org.eclipse.hyades.logging.commons.Logger vérifie si les messages de journal java.lang.Object et/ou java.lang.Throwable enregistrés dans un consignateur peuvent être consignés en fonction du niveau de consignation du consignateur. Si le message de journal doit être consigné, java.lang.Object et java.lang.Throwable sont mis en forme à l'aide d'un org.eclipse.hyades.internal.logging.core.XmlGenerator et enregistrés dans l'agent de journalisation. Lors de la mise en forme, l'objet est vérifié pour savoir s'il implémente l'interface org.eclipse.hyades.logging.core. IExternalizableToXml. Si tel est le cas, l'API externalizeCanonicalXmlString() est appelée à la place de la sérialisation XML au moyen d'une introspection pour des raisons de performances. Pour amorcer la classe
org.eclipse.hyades.logging.commons.Logger dans la classe
org.apache.commons.logging.LogFactory, vous devez définir la propriété système suivante lors du démarrage de VM :
-Dorg.apache.commons.logging.Log=org.eclipse.hyades.logging.commons.Logger
Précautions
- Si vous consignez des messages de journal de type chaîne, vous ne devez pas incorporer des fragments XML dans le message. Si vous incorporez des fragments XML dans le message de journal, le contenu XML va être standardisé et ajouté à la valeur de l'attribut de valeur d'une balise string.
Par exemple,
<String >logging.util.agent_idref>=>"AGENT_CREATE.LoggingUtilSample
logger.1045075846.538" >logging.util.MsgLoggerLevel>=>"FINEST"
>Value>=>"<tag attribute="value"/>">/>>
- Si vous utilisez les utilitaires de journalisation autonomes com.ibm.etools.logging.util, vous devez ajouter le chemin d'accès aux
fichiers JAR hlcore.jar, hparse.jar, hexl.jar et hexr.jar dans le chemin de classe système et VM.
Concepts connexes
Modèle Common Base Event
(C) Copyright IBM Corporation 2000, 2003. All Rights Reserved.