Journalisation de détails personnalisés d'événements professionnels pour l'analyse de site

D'un point de vue professionnel, vous souhaiterez peut-être consigner des détails personnalisés d'événements professionnels.

Pourquoi et quand exécuter cette tâche

Remarque : Les procédures décrites dans cette rubrique et ses sous-rubriques ne s'appliquent qu'aux portlets standard (JSR 168 ou JSR 286).
Ci-après les principaux composants de la structure de journalisation de l'analyse de site pour des portlets standard :
com.ibm.portal.portlet.service.siteanalyzer.PortletSiteAnalyzerLoggingServiceHome
Ce service de portlet illustre des méthodes permettant d'obtenir une instance de consignateur spécialisée pour le type de requête. Ce type de requête est ActionRequest (d'action), EventRequest (d'événement), RenderRequest (de rendu) ou ResourceRequest (de ressource). Ce service de portlet peut être obtenu via une recherche JNDI.
com.ibm.portal.portlet.service.siteanalyzer.PortletSiteAnalyzerLogger
Les portlets peuvent récupérer une instance de ce consignateur via PortletSiteAnalyzerLoggingServiceHome. Ce service s'applique à une requête pour laquelle il a été créé et propose des méthodes pour connaître l'état du consignateur (activé ou désactivé) et pour créer une entrée de journal d'analyse de site.
com.ibm.portal.portlet.service.siteanalyzer.ParameterNamesProcessor
Requête des noms de paramètre de requête, notamment des noms de paramètre de rendu codés dans les URL de portail ; doit être la plus courte possible. Cette recommandation ne laisse pas beaucoup d'espace aux noms de paramètre dans les entrées du journal d'analyse de site. L'interface ParameterNamesProcessor permet aux développeurs du portlet d'attribuer à PortletSiteAnalyzerLogger un rappel pour le traitement des noms de paramètre de requête. Les mises en oeuvre de cette interface sont appelées par la structure de l'analyse de site avant assemblage de la section de la chaîne requête de l'URI de requête qui est consignée dans le fichier journal d'analyse de site.
Pour activer et utiliser le consignateur de l'analyse de site du portail pour des portlets standard, procédez comme suit :

Procédure

  1. Activation du consignateur de l'analyse de site pour des portlets standard : Vous activez le consignateur de l'analyse de site pour des portlets standard à l'aide du service de configuration du portail SiteAnalyzerLogService. Vous définissez sa propriété dans la console WebSphere® Integrated Solutions Console via le fournisseur d'environnement de ressources WP SiteAnalyzerLogService. Pour ce faire, procédez comme suit :
    1. Sélectionnez la console WebSphere® Integrated Solutions Console appropriée, en fonction de votre environnement :
      • Si votre portail s'exécute en mode autonome, utilisez la console WebSphere® Integrated Solutions Console locale.
      • Si votre portail est installé dans un cluster, utilisez la console WebSphere® Integrated Solutions Console du gestionnaire de déploiement.
    2. Démarrez la console WebSphere® Integrated Solutions Console en entrant l'URL suivante dans le champ Emplacement d'URL d'un navigateur Web :
      http://your_server.com:admin_port/ibm/console
      your_server.com est le nom de votre serveur et admin_port le port affecté à la console WebSphere® Integrated Solutions Console.
    3. Dans la navigation, cliquez sur Ressources > Environnement de ressources > Fournisseurs d'environnement de ressources.
    4. Dans la page Fournisseurs d'environnement de ressources, effectuez la sélection appropriée, selon votre version de WebSphere® Application Server et de votre environnement de portail :
      • Pour la version 6.1 de WebSphere® Application Server : sélectionnez le nœud ou cluster approprié dans la liste déroulante des portées, en fonction de l'environnement de votre portail.
      • Pour la version 7.0 de WebSphere® Aplication Server : sélectionnez le nœud ou cluster approprié dans la liste déroulante des portées ou désélectionnez la case de sélection déroulante Afficher la portée, puis sélectionnez l'une des options suivantes en fonction de l'environnement de votre portail :
        • Si votre portail s'exécute avec un serveur unique, sélectionnez Parcourir les nœuds, puis sélectionnez le nœud.
        • Si votre portail est installé dans un cluster, sélectionnez Parcourir les clusters, puis sélectionnez le cluster de portails.
    5. Dans la page Fournisseurs d'environnement de ressources, sélectionnez le nœud ou le cluster approprié dans la liste déroulante des portées ou désélectionnez la case de sélection déroulante Afficher la portée et sélectionnez l'une des options suivantes, selon l'environnement de votre portail :
      • Si votre portail s'exécute avec un serveur unique, sélectionnez Parcourir les nœuds, puis sélectionnez le nœud.
      • Si votre portail est installé dans un cluster, sélectionnez Parcourir les clusters, puis sélectionnez le cluster de portails.
    6. Sélectionnez WP SiteAnalyzerLogService.
    7. Cliquez sur Propriétés personnalisées.
    8. Effectuez l'une des opérations suivantes :
      • Sélectionnez la propriété SiteAnalyzerJSRPortletLogger.isLogging et remplacez sa valeur par true.
      • Créez une nouvelle propriété nommée SiteAnalyzerJSRPortletLogger.isLogging et définissez sa valeur sur true. Utilisez java.lang.String pour le type de la propriété.
    9. Une fois terminé, cliquez sur Enregistrer en début de page sous Message(s).
    10. Cliquez à nouveau sur Enregistrer dans la fenêtre de confirmation des modifications.
    11. Facultatif : Si votre portail s'exécute dans une configuration de cluster, répliquez vos modifications sur le cluster.
    12. Redémarrez le portail pour appliquer les modifications.
  2. Mise en œuvre d'un processeur de noms de paramètre : l'exemple de code suivant illustre une mise en œuvre de l'interface ParameterNamesProcessor. Il inclut le mappage statique d'éventuels noms de paramètre de requête dans un expression plus explicite que vous souhaitez utiliser dans les entrées du journal d'analyse de site. Si aucun remplacement n'est possible pour un nom de paramètre, la clé d'origine est renvoyée pour être consignée telle quelle dans l'entrée du journal de l'analyse de site. Exemple :
    public class ParameterNamesProcessorSample implements ParameterNamesProcessor
    {
       private static final Hashtable<String, String> PARAM_NAMES_MAP;
    
       static
       {
          PARAM_NAMES_MAP = new Hashtable();
          PARAM_NAMES_MAP.put("ci", "CurrentItem");
       }
    
       public String processParameterName(String paramName)
       {
          // get a replacement for the given parameter name or
          // return the original key if not replacement exists
          if (PARAM_NAMES_MAP.containsKey(paramName))
          {
             return PARAM_NAMES_MAP.get(paramName);
          }
          else
          {
             return paramName;
          }
       }
    }
  3. Récupération du service de consignation de l'analyseur de site du portlet : l'exemple de code suivant illustre la méthode init d'une classe de portlet qui recherche une instance du service de consignation de l'analyseur de site du portlet. Il permet également de créer une instance d'un exemple de mise en œuvre de l'interface ParameterNamesProcessor.
    private PortletSiteAnalyzerLoggingServiceHome iSALogServiceHome = null;
    
    private ParameterNamesProcessorSample iParamNamesProc = null;
    
    public void init() throws PortletException
    {
      com.ibm.portal.portlet.service.PortletServiceHome psh;
      javax.naming.Context ctx = new javax.naming.InitialContext();
    
      try 
      {
        psh = (PortletServiceHome) ctx
          .lookup(PortletSiteAnalyzerLoggingServiceHome.JNDI_NAME);
      } 
      catch (javax.naming.NameNotFoundException e) {
        // error handling
      }
     
      // obtain the service object 
      PortletSiteAnalyzerLoggingServiceHome iSALogServiceHome = 
        (PortletSiteAnalyzerLoggingServiceHome) psh
          .getPortletService(PortletSiteAnalyzerLoggingServiceHome.class);
    
      // instantiate the sample parameter names processor
      paramNamesProc = new ParameterNamesProcessorSample();
    }
  4. Récupération d'une instance du consignateur de l'analyse de site du portlet : une instance de consignateur dépend d'une requête de portlet spécifique. Sa validité est liée à un cycle de traitement de requête. La création de l'instance du consignateur doit donc être effectuée pour chaque requête. L'objet de service obtenu à l'étape précédente permet d'accéder à diverses méthodes afin d'obtenir une instance de consignateur.
    L'exemple de code suivant illustre la récupération d'une instance de consignateur pour la requête RenderRequest en cours dans la méthode doView d'un portlet. Cet exemple d'instance du processeur de noms de paramètre passe également à la méthode getLogger afin d'enregistrer ce rappel pour le consignateur renvoyé. Exemple :
    protected void doView(final RenderRequest renderRequest, final RenderResponse 
           renderResponse) throws PortletException, IOException
    {
      final PortletSiteAnalyzerLogger saLogger = iSALogServiceHome.getLogger(renderRequest, 
           renderResponse, iParamNamesProc);
    
      // further request processing
    }
  5. Consignation d'un événement professionnel : lorsqu'un portlet utilise l'instance de PortletSiteAnalyzerLogger, le consignateur insère un événement professionnel dans le fichier journal d'analyse de site. Exemple :
    protected void doView(final RenderRequest renderRequest, final RenderResponse 
         renderResponse) throws PortletException, IOException
    {
      // request processing
    
      // check whether the logger is enabled
      if (saLogger.isLogging())
      {
        // create a site analysis log entry
        saLogger.log("A sample business event");
      }
    
      // further request processing
    }

Résultats

Présentation du journal d'analyse de site pour les portlets standard : les entrées de journal d'analyse de site insérées par PortletSiteAnalyzerLogger présentent la même structure que les entrées de journal créées par d'autres types de consignateurs de l'analyse de site proposés par le portail. Ce consignateur particulier met également en oeuvre la norme NCSA Combined.

L'exemple suivant illustre comment la représentation codée en URL de l'événement professionnel personnalisé est écrite dans la section de l'URI de requête d'un enregistrement du journal. Les caractères non ASCII sont tout d'abord codés en séquences de 2 ou 3 octets à l'aide de l'algorithme UTF-8, puis en espaces %HH. L'événement professionnel codé précède le fragment de la requête qui commence par un point d'interrogation. En outre, le nom du paramètre de la requête ci a été remplacé par ParameterNamesProcessorSample et apparaît désormais dans le fragment de la requête dans la section de l'URI de requête de l'enregistrement du journal comme suit : CurrentItem.
9.37.3.88 - jdoe [22/Nov/2008:22:11:27 +0100] "GET /Portlet/
5_8000CB1A00U6B02NVSPH1G20G1/SamplePortlet/A%20sample%20business%20event
?PortletPID=5_8000CB1A00U6B02NVSPH1G20G1&PortletMode=view&PortletState=normal
&RequestType=render&CurrentItem=9783000216008 HTTP/1.1" 200 -1
"http://myserver.company.com/Page/6_8000CB1A00UR402F0JC25U1O25/SamplePage"
"Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.18) Gecko/20081029
Firefox/2.0.0.18" "JSESSIONID=0000JwIm04xm7btVLwzCj9Qo-uj:-1"