spip_log

Cette fonction permet de stocker des actions dans les fichiers de logs (généralement placés dans le répertoire tmp/log/).

Cette fonction prend 1 ou 2 arguments. Un seul, elle écrira dans le fichier spip.log. Le second argument peut avoir 2 actions :
- écrire dans un fichier séparé et aussi dans spip.log en donnant un nom de fichier (sans extension) [1],
- indiquer un niveau de log, tel que _LOG_INFO
- combiner les 2 actions, en concaténant au nom de fichier (éventuellement suivi d’un point) le niveau de log.

<?php
spip_log($tableau);
spip_log($tableau, 'second_fichier');
spip_log($tableau, _LOG_ERREUR);
spip_log($tableau, 'second_fichier.' . _LOG_AVERTISSEMENT);
spip_log("ajout de $champ dans $table","mon_plugin");
?>

Lorsqu’un tableau est transmis à la fonction de log, SPIP écrira le résultat d’un print_r() dans le fichier de log. Pour chaque fichier demandé, ici spip (par défaut) et second_fichier, SPIP créera ou ajoutera le contenu du premier argument, mais pas n’importe où. Si le script est dans l’interface privée, il écrira dans « prive_spip.log » ou « prive_second_fichier.log », sinon dans « spip.log » ou « second_fichier.log ».

Le fichier de configuration ecrire/inc_version.php définit la taille maximale des fichiers de log (de même que la verbosité des logs écrits). Lorsqu’un fichier dépasse la taille souhaitée, il est copié sous un autre nom, par exemple prive_spip.log.n (n s’incrémentant). Ce nombre de fichiers copiés est aussi réglable. Il est aussi possible de désactiver les logs en mettant une de ces valeurs à zéro dans mes_options.php.

$GLOBALS['nombre_de_logs'] = 4; // 4 fichiers au plus
$GLOBALS['taille_des_logs'] = 100; // de 100ko au plus

Une constante _MAX_LOG (valant 100 par défaut) indique le nombre d’entrées que chaque appel d’une page peut écrire. Ainsi, après 100 appels de spip_log() par un même script, la fonction ne log plus.

Une constante _LOG_FILELINE (false par défaut) permet de préciser dans le fichier de log la ligne, le fichier à l’origine de l’écriture de la ligne de log. (cf : http://www.spip.net/fr_article5506.html)

Une constante _LOG_FILTRE_GRAVITE (par défaut valant _LOG_INFO_IMPORTANTE) permet de spécifier le niveau de verbosité des logs. Le niveau de log par défaut de la fonction spip_log est _LOG_INFO. Beaucoup de logs ne seront donc pas affichés par défaut. Lire http://www.spip.net/5543 pour des compléments sur cette constante.

Pour une écriture donnée, il est possible de forcer son niveau. En suffixant le fichier de log du niveau de verbosité attendu, par exemple pour un niveau d’erreur :

spip_log($tableau, _LOG_ERREUR);
spip_log($tableau, 'second_fichier'._LOG_ERREUR);

Les différents niveaux, du plus important au moins important – et donc également du moins verbeux au plus verbeux – sont :

  • _LOG_HS
  • _LOG_ALERTE_ROUGE
  • _LOG_CRITIQUE
  • _LOG_ERREUR
  • _LOG_AVERTISSEMENT
  • _LOG_INFO_IMPORTANTE
  • _LOG_INFO
  • _LOG_DEBUG

Notes

[1Attention : n’utiliser que des lettres. Si vous utilisez un chiffre dans le nom, le niveau de log n’est pas pris en compte !

Auteur Matthieu Marcillaud Publié le : Mis à jour : 06/10/16

Traductions : English, français