Configuration des journaux
Aperçu
Fess génère plusieurs fichiers journaux pour enregistrer l’état de fonctionnement du système et les informations d’erreur. Une configuration appropriée des journaux facilite le dépannage et la surveillance du système.
Types de fichiers journaux
Fichiers journaux principaux
Les principaux fichiers journaux générés par Fess sont les suivants.
Emplacement des fichiers journaux
Pour l’installation Zip :
{FESS_HOME}/logs/
Pour les paquets RPM/DEB :
/var/log/fess/
Vérification des journaux lors du dépannage
En cas de problème, vérifiez les journaux en suivant ces étapes.
Identifier le type d’erreur
Erreur d’application →
fess.logErreur d’exploration →
fess_crawler.logErreur d’authentification →
audit.logErreur de serveur →
server_?.log
Vérifier les erreurs les plus récentes
tail -f /var/log/fess/fess.log
Rechercher des erreurs spécifiques
grep -i "error" /var/log/fess/fess.log grep -i "exception" /var/log/fess/fess.log
Vérifier le contexte de l’erreur
En vérifiant les journaux avant et après l’erreur, vous pouvez identifier la cause.
grep -B 10 -A 10 "OutOfMemoryError" /var/log/fess/fess.log
Configuration du niveau de journalisation
À propos des niveaux de journalisation
Les niveaux de journalisation contrôlent le niveau de détail des journaux générés.
| Niveau | Description |
|---|---|
FATAL | Erreur fatale (l’application ne peut pas continuer) |
ERROR | Erreur (une partie des fonctionnalités ne fonctionne pas) |
WARN | Avertissement (problème potentiel) |
INFO | Information (événement important) |
DEBUG | Informations de débogage (journaux de fonctionnement détaillés) |
TRACE | Informations de trace (le plus détaillé) |
Niveaux de journalisation recommandés
| Environnement | Niveau recommandé | Raison |
|---|---|---|
| Environnement de production | WARN | Priorité aux performances et à l’espace disque |
| Environnement de staging | INFO | Enregistrer les événements importants |
| Environnement de développement | DEBUG | Informations de débogage détaillées nécessaires |
| Lors de l’investigation de problèmes | DEBUG ou TRACE | Activer temporairement les journaux détaillés |
Modification via l’interface d’administration
La méthode la plus simple consiste à modifier via l’interface d’administration.
Connectez-vous à l’interface d’administration.
Sélectionnez « Général » dans le menu « Système ».
Sélectionnez le niveau souhaité dans « Niveau de journalisation ».
Cliquez sur le bouton « Mettre à jour ».
Note
Les modifications dans l’interface d’administration sont conservées même après le redémarrage de Fess.
Modification via le fichier de configuration
Pour une configuration plus détaillée des journaux, modifiez le fichier de configuration Log4j2.
Emplacement du fichier de configuration
Installation Zip :
app/WEB-INF/classes/log4j2.xmlPaquets RPM/DEB :
/etc/fess/log4j2.xml
Exemples de configuration de base
Niveau de journalisation par défaut :
<Logger name="org.codelibs.fess" level="warn"/>
Exemple : Changement au niveau DEBUG
<Logger name="org.codelibs.fess" level="debug"/>
Exemple : Modification du niveau de journalisation pour un paquet spécifique
<Logger name="org.codelibs.fess.crawler" level="info"/>
<Logger name="org.codelibs.fess.ds" level="debug"/>
<Logger name="org.codelibs.fess.app.web" level="warn"/>
Avertissement
Les niveaux DEBUG et TRACE génèrent une grande quantité de journaux, ne les utilisez pas en environnement de production. Cela affecte l’espace disque et les performances.
Configuration via les variables d’environnement
Vous pouvez également spécifier le niveau de journalisation lors du démarrage du système.
FESS_JAVA_OPTS="$FESS_JAVA_OPTS -Dlog.level=debug"
Configuration des journaux d’exploration
Les journaux d’exploration sont générés au niveau INFO par défaut.
Configuration dans l’interface d’administration
Ouvrez la configuration d’exploration cible depuis le menu « Explorateur » de l’interface d’administration.
Sélectionnez « Script » dans l’onglet « Configuration ».
Ajoutez ce qui suit dans le champ script.
logLevel("DEBUG")
Valeurs configurables :
FATALERRORWARNINFODEBUGTRACE
Modification du niveau de journalisation uniquement pour des modèles d’URL spécifiques
if (url.contains("example.com")) {
logLevel("DEBUG")
}
Modification du niveau de journalisation pour l’ensemble du processus d’exploration
Configuration dans fess_config.properties :
logging.level.org.codelibs.fess.crawler=DEBUG
Rotation des journaux
Aperçu
Les fichiers journaux grossissent avec le temps, une rotation régulière (gestion des générations) est donc nécessaire.
Rotation automatique avec Log4j2
Fess utilise le RollingFileAppender de Log4j2 pour effectuer automatiquement la rotation des journaux.
Configuration par défaut
Taille du fichier : Rotation lorsque 10 Mo sont dépassés
Nombre de générations conservées : Maximum 10 fichiers
Exemple de fichier de configuration (log4j2.xml) :
<RollingFile name="FessFile"
fileName="${log.dir}/fess.log"
filePattern="${log.dir}/fess.log.%i">
<PatternLayout pattern="%d{ISO8601} [%t] %-5p %c - %m%n"/>
<Policies>
<SizeBasedTriggeringPolicy size="10MB"/>
</Policies>
<DefaultRolloverStrategy max="10"/>
</RollingFile>
Configuration de rotation quotidienne
Pour une rotation quotidienne plutôt que par taille :
<RollingFile name="FessFile"
fileName="${log.dir}/fess.log"
filePattern="${log.dir}/fess.log.%d{yyyy-MM-dd}">
<PatternLayout pattern="%d{ISO8601} [%t] %-5p %c - %m%n"/>
<Policies>
<TimeBasedTriggeringPolicy interval="1" modulate="true"/>
</Policies>
<DefaultRolloverStrategy max="30"/>
</RollingFile>
Configuration de compression
Pour compresser automatiquement lors de la rotation :
<RollingFile name="FessFile"
fileName="${log.dir}/fess.log"
filePattern="${log.dir}/fess.log.%d{yyyy-MM-dd}.gz">
<PatternLayout pattern="%d{ISO8601} [%t] %-5p %c - %m%n"/>
<Policies>
<TimeBasedTriggeringPolicy interval="1" modulate="true"/>
</Policies>
<DefaultRolloverStrategy max="30"/>
</RollingFile>
Rotation avec logrotate
Dans un environnement Linux, vous pouvez également gérer la rotation des journaux avec logrotate.
Exemple de /etc/logrotate.d/fess :
/var/log/fess/*.log {
daily
rotate 14
compress
delaycompress
missingok
notifempty
create 0644 fess fess
sharedscripts
postrotate
systemctl reload fess > /dev/null 2>&1 || true
endscript
}
Explication de la configuration :
daily: Rotation quotidiennerotate 14: Conserver 14 générationscompress: Compresser les anciens journauxdelaycompress: Ne pas compresser la génération précédente (l’application peut être en cours d’écriture)missingok: Pas d’erreur si le fichier journal n’existe pasnotifempty: Ne pas effectuer de rotation pour les fichiers journaux videscreate 0644 fess fess: Permissions et propriétaire du nouveau fichier journal
Surveillance des journaux
En environnement de production, il est recommandé de surveiller les fichiers journaux pour détecter rapidement les erreurs.
Modèles de journaux à surveiller
Modèles d’erreurs importants
Journaux de niveau
ERRORetFATALOutOfMemoryErrorConnection refusedTimeoutExceptioncircuit_breaker_exceptionToo many open files
Modèles d’alerte
Journaux de niveau
WARNfréquentsRetryingSlow queryQueue full
Surveillance en temps réel
Surveillance en temps réel avec la commande tail :
tail -f /var/log/fess/fess.log | grep -i "error\|exception"
Surveillance simultanée de plusieurs fichiers journaux :
tail -f /var/log/fess/*.log
Exemples d’outils de surveillance
Logwatch
Analyse et rapport périodiques des fichiers journaux.
# Installation (CentOS/RHEL)
yum install logwatch
# Envoi de rapport quotidien
logwatch --service fess --mailto admin@example.com
Logstash + OpenSearch + OpenSearch Dashboards
Analyse de journaux en temps réel et visualisation.
Fluentd
Collecte et transfert de journaux.
<source>
@type tail
path /var/log/fess/fess.log
pos_file /var/log/fluentd/fess.log.pos
tag fess.app
<parse>
@type multiline
format_firstline /^\d{4}-\d{2}-\d{2}/
format1 /^(?<time>\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2},\d{3}) \[(?<thread>.*?)\] (?<level>\w+)\s+(?<logger>.*?) - (?<message>.*)/
</parse>
</source>
Prometheus + Grafana
Surveillance des métriques et alertes.
Configuration des alertes
Exemple de notification lors de la détection d’erreur :
# Script simple de notification par e-mail
tail -n 0 -f /var/log/fess/fess.log | while read line; do
echo "$line" | grep -i "error\|fatal" && \
echo "$line" | mail -s "Fess Error Alert" admin@example.com
done
Format des journaux
Format par défaut
Format de journal par défaut de Fess :
%d{ISO8601} [%t] %-5p %c - %m%n
Explication de chaque élément :
%d{ISO8601}: Horodatage (format ISO8601)[%t]: Nom du thread%-5p: Niveau de journalisation (largeur de 5 caractères, aligné à gauche)%c: Nom du logger (nom du paquet)%m: Message%n: Saut de ligne
Exemples de formats personnalisés
Sortie des journaux au format JSON
<PatternLayout>
<pattern>{"timestamp":"%d{ISO8601}","thread":"%t","level":"%-5p","logger":"%c","message":"%m"}%n</pattern>
</PatternLayout>
Inclure des informations plus détaillées
<PatternLayout pattern="%d{ISO8601} [%t] %-5p %c{1.} [%F:%L] - %m%n"/>
Informations supplémentaires :
%c{1.}: Nom de paquet abrégé%F: Nom du fichier%L: Numéro de ligne
Impact sur les performances
La sortie des journaux affecte les E/S disque et les performances.
Bonnes pratiques
Utiliser le niveau WARN ou supérieur en production
Éviter de générer des journaux détaillés inutiles.
Nettoyage régulier des fichiers journaux
Supprimer ou compresser les anciens fichiers journaux.
Utilisation de la sortie de journaux asynchrone
Utiliser l’appender asynchrone de Log4j2 pour réduire la surcharge de sortie des journaux.
<Async name="AsyncFile"> <AppenderRef ref="FessFile"/> </Async>
Assurer un espace disque suffisant
Assurer un espace disque suffisant pour les fichiers journaux.
Sélection appropriée du niveau de journalisation
Configurer le niveau de journalisation en fonction de l’environnement.
Mesure des performances
Mesurer l’impact de la sortie des journaux :
# Vérifier la quantité de journaux générés
du -sh /var/log/fess/
# Augmentation des journaux par heure
watch -n 3600 'du -sh /var/log/fess/'
Dépannage
Les journaux ne sont pas générés
Causes et solutions :
Permissions du répertoire des journaux
ls -ld /var/log/fess/ # Modifier les permissions si nécessaire sudo chown -R fess:fess /var/log/fess/ sudo chmod 755 /var/log/fess/
Espace disque
df -h /var/log # En cas d'espace insuffisant, supprimer les anciens journaux find /var/log/fess/ -name "*.log.*" -mtime +30 -delete
Fichier de configuration Log4j2
# Vérifier la syntaxe du fichier de configuration xmllint --noout /etc/fess/log4j2.xml
Vérifier SELinux
# Si SELinux est activé getenforce # Définir le contexte si nécessaire restorecon -R /var/log/fess/
Le fichier journal devient trop volumineux
Ajuster le niveau de journalisation
Définir au niveau
WARNou supérieur.Vérifier la configuration de rotation des journaux
# Vérifier la configuration de log4j2.xml grep -A 5 "RollingFile" /etc/fess/log4j2.xml
Désactiver les sorties de journaux inutiles
# Supprimer les journaux pour un paquet spécifique <Logger name="org.apache.http" level="error"/>
Solution temporaire
# Compresser les anciens fichiers journaux gzip /var/log/fess/fess.log.[1-9] # Supprimer les anciens fichiers journaux find /var/log/fess/ -name "*.log.*" -mtime +7 -delete
Impossible de trouver un journal spécifique
Vérifier le niveau de journalisation
Si le niveau de journalisation est trop bas, il ne sera pas généré.
grep "org.codelibs.fess" /etc/fess/log4j2.xml
Vérifier le chemin du fichier journal
# Vérifier la destination réelle de sortie des journaux ps aux | grep fess lsof -p <PID> | grep log
Vérifier l’horodatage
Vérifiez que l’heure système est correcte.
date timedatectl status
Mise en mémoire tampon des journaux
Les journaux peuvent ne pas être écrits immédiatement.
# Forcer le vidage des journaux systemctl reload fess
Caractères corrompus dans les journaux
Configuration de l’encodage
Spécifier l’encodage des caractères dans
log4j2.xml:<PatternLayout pattern="%d{ISO8601} [%t] %-5p %c - %m%n" charset="UTF-8"/>
Configuration des variables d’environnement
export LANG=ja_JP.UTF-8 export LC_ALL=ja_JP.UTF-8
Informations de référence
Configuration de la mémoire - Configuration de la mémoire
Configuration avancée du robot d’indexation - Configuration avancée de l’explorateur
Gestion des index - Sauvegarde de l’index