Sous les systèmes Linux, l'utilitaire logrotate est souvent utilisé pour faire la rotation des logs. Nous allons voir comment le mettre en œuvre, pour les fichiers logs Magento.
Logrotate fonctionne avec des fichiers de configuration. Ces fichiers définissent les règles à appliquer pour un fichier ou pattern défini.
Configuration pour la rotation des fichiers de logs
Les fichiers de logs de Magento sont généralement stockés dans le répertoire var/log du site Web. On y trouve les fichiers classiques Magento (system.log, exception.log) ou des fichiers de logs mis en place spécifiquement.
La configuration ci-dessus nous permet de définir une rotation, pour les fichiers de type *.log se trouvant dans le répertoire var/log, avec les règles suivantes :
- Un intervalle de rotation hebdomadaire
- Continuer le processus en cas d'erreur
- Garder 4 semaines de journalisation
- Compresser les fichiers
- Compresser avec un délai un intervalle
- Ne pas effectuer la rotation si le fichier est vide
Configuration pour la rotation des reports
En plus des logs, Magento génère des reports en cas d'erreur interne. Nous allons également définir une configuration pour que logrotate archive ces documents.
La configuration ci-dessus nous permet de définir une rotation, pour les fichiers se trouvant dans le répetoire var/report, avec les règles suivantes :
- Un intervalle de rotation quotidien
- Continuer le processus en cas d'erreur
- Garder 30 jours de journalisation
- Déplacer les fichiers dans le sous répertoire old
Cette configuration peut être écrite à la suite de la configuration précédente, dans un unique fichier.
Mise en place de la rotation
Une fois les configurations de logrotate définies, il ne reste plus qu'à les faire appliquer par le programme.
Une première solution consiste à demander à l'hébergeur d'ajouter notre fichier de configuration spécifique Magento aux autres fichiers de configuration logrotate. Dans ce cas, pour chaque modification, il faudra passer par l'hébergeur.
Le petit script ci après nous permettra d'être indépendant de l'hébergeur.
Le script ci-dessus va vérifier que l'utilitaire logrotate est présent sur la plateforme. Le cas échéant, logrotate sera exécuté avec le fichier de configuration précédemment décrit. A noter le passage de l'option -s, qui permet d'éviter les conflits de droits sur le fichier status, nécessaire à logrorate.
Une fois le fonctionnement validé, il ne reste plus qu'à ajouter une ligne dans la crontab.
A vous de jouer ! N'hésitez pas à adapter les configurations et le script à vos besoins. Il est, par exemple, tout à fait possible de transposer ce modèle pour Drupal.