Oracle Application Server : rotation des logs OPMN via OC4J

Sur un environnement Oracle Application Server, les logs peuvent se remplir au point de mettre en péril la production, mais ça peut aussi rendre difficile la lecture des logs. Pour éviter ce problème, vous pouvez mettre en place une épuration régulière via des taches planifiées, ou bien mettre en place la rotation automatique des logs via OC4J. C’est ce que nous allons voir dans cet article.
Nous allons nous baser sur un exemple concret, afin d’expliquer les différentes options et paramètres.
 
Prenons le module OC4J_Portal, dont le log se situe ici :

$ORACLE_HOME/opmn/logs/OC4J~OC4J_Portal~default_island~1

Pour mettre en place cette rotation, nous allons devoir modifier le fichier $ORACLE_HOME/opmn/conf/opmn.xml. Il faut donc avant toute chose, faire une sauvegarde de ce fichier.
Ouvrir le fichier opmn.xml, et rechercher la balise :

<ias-component id="OC4J">

Dans cette balise, il faut trouver la balise « process-type », qui correspond au module que nous souhaitons paramétrer :

<process-type id="OC4J_Portal" module-id="OC4J" status="enable">

Sous cette balise , il y a la balise <data>, il faut y ajouter les options suivantes, dans l’attribut ‘value’

"-Dstdstream.filesize=10" ("10" correspond à la taille de vos logs en MB avant leur rotation)
"-Dstdstream.filenumber=5" (Permet de spécifier le nombre de fichiers de log que vous souhaitez garder).

Exemple :

<data id="java-options"
 value="-server
        -Djava.security.policy=$ORACLE_HOME/j2ee/home/config/java2.policy
        -Djava.awt.headless=true
        -Dstdstream.filesize=10
        -Dstdstream.filenumber=5"/>

Enfin, ajouter une autre balise « data », avec les attributs « id » et « value » :

 <data id="oc4j-options"
       value="-out $ORACLE_HOME/opmn/logs/oc4j_portal.out
              -err $ORACLE_HOME/opmn/logs/oc4j_portal.err"/>

Les valeurs de l’attribut « value », permettent de définir l’emplacement des logs.
Au final, voici l’enchaînement de balises, qu’on devrait retrouver :

<ias-component id="OC4J">
...
   <process-type id="OC4J_Portal" module-id="OC4J" status="enable">
      <category id="start-parameters">
         <data id="java-options" value="-server -Djava.security.policy=$ORACLE_HOME/j2ee/home/config/java2.policy -Djava.awt.headless=true -Dstdstream.filesize=10 -Dstdstream.filenumber=5">
         <data id="oc4j-options" value="-out $ORACLE_HOME/opmn/logs/oc4j_portal.out -err $ORACLE_HOME/opmn/logs/oc4j_portal.err">
       </category>

Dans l’exemple, les fichiers de logs seront créés dans l’arborescence suivante, lors de chaque rotation :
$ORACLE_HOME/opmn/logs/oc4j_portal_default_island_1/oc4j_portal_2013_02_06.out
Pour que les modifications soient prises en compte, il faudra redémarrer le module concerné.