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