Tomcat (autres infos)

De wiki.nexiat.fr
Aller à la navigation Aller à la recherche
Fiche express
Sujet Directives Host / Valve, journalisation
Voir aussi Tomcat · Tomcat (divers)

Informations complémentaires à la procédure principale Tomcat : directives Host et Valve, et journalisation fine.

Directive Host

Correspond à un vhost Apache. En général, elle n'est pas à modifier.

<Host name="localhost" appBase="webapps"
      unpackWARs="true" autoDeploy="true"
      xmlValidation="false" xmlNamespaceAware="false">

Directive Valve

Une Valve est un composant Java inséré dans le traitement des requêtes (un filtre). Elle s'applique sur <Engine>, <Host> ou <Context>.

org.apache.catalina.valves.AccessLogValve            journalise les accès
org.apache.catalina.valves.JDBCAccessLogValve        journalise les accès en base
org.apache.catalina.valves.RemoteAddrValve           restriction d'accès par IP
org.apache.catalina.valves.RemoteHostValve           restriction par nom d'hôte
org.apache.catalina.valves.RequestDumperValve        journalise le contenu des requêtes
org.apache.catalina.authenticator.SingleSignOn       SSO entre applications
org.apache.catalina.valves.FastCommonAccessLogValve  variante performante d'AccessLogValve

Exemple :

<Host name="www.exemple.fr" appBase="MyApps"
      unpackWARs="false" autoDeploy="false"
      xmlValidation="false" xmlNamespaceAware="false">
  <Context docBase="/TestAppli" path="/" reloadable="false" swallowOutput="true">
    <Valve className="org.apache.catalina.valves.AccessLogValve"
           directory="logs" prefix="test_acces_log" suffix=".txt"
           rotatable="true" resolveHosts="false"
           pattern="%a - %U %t %{USER-AGENT}i &quot;%r&quot; %s %b" />
  </Context>
</Host>

Journalisation fine (java.util.logging)

Fichier conf/logging.properties. Un journal se définit en deux parties : le handler (attributs) et le logger (fichier et niveau). Le logger respecte la hiérarchie de l'élément à journaliser :

org.apache.catalina.core.ContainerBase.[Engine].[Host].[/Context]

Exemple :

# Handler
handlers = 6host-exemple-fr.org.apache.juli.FileHandler
6host-exemple-fr.org.apache.juli.FileHandler.level     = ALL
6host-exemple-fr.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
6host-exemple-fr.org.apache.juli.FileHandler.formatter = java.util.logging.SimpleFormatter
6host-exemple-fr.org.apache.juli.FileHandler.prefix    = host-exemple-fr.

# Logger sur le host
org.apache.catalina.core.ContainerBase.[Catalina].[www.exemple.fr].[/].level    = ALL
org.apache.catalina.core.ContainerBase.[Catalina].[www.exemple.fr].[/].handlers = 6host-exemple-fr.org.apache.juli.FileHandler
level     : niveau (SEVERE, CONFIG, INFO, WARNING, FINE, FINEST, ALL)
directory : dossier de stockage
formatter : classe de formatage du contenu
prefix    : préfixe du fichier
handlers  : lie le logger à un handler

Pour journaliser le détail de toutes les requêtes, on utilise la valve RequestDumperValve :

<Valve className="org.apache.catalina.valves.RequestDumperValve" />

Voir aussi