# Log des informations

Un système de log est proposé par la plateforme. Ce système est une classe PHP qui repose sur la bibliothèque monolog et est conforme à la norme PSR-3.

Cette classe Anakeen\LogManager permet simplement d'enregistrer des messages sur le système de log préconfiguré de la plateforme.

# Paramétrage du niveau de log

La configuration par défaut permet de logguer sur le système syslog du serveur tous les messages de priorité supérieure ou égale au paramètre Core::CORE_LOGLEVEL.

Ce paramètre indique la priorité minimum à logguer. Les valeurs possibles sont les suivantes (données dans l'ordre des priorités)

  1. EMERGENCY
  2. ALERT
  3. CRITICAL
  4. ERROR
  5. WARNING
  6. NOTICE
  7. INFO
  8. DEBUG

Ce paramètre est par défaut à NOTICE. Il loggue par conséquent tous les messages sauf DEBUG et INFO.

La configuration par défaut loggue aussi les messages ERROR (et supérieurs) sur le système de log d'erreur de php (error_log).

# Utilisation du système de log

Pour envoyer un message au système de log, il suffit d'utiliser les méthodes statiques de la classe Anakeen\LogManager. Une méthode par priorité est définie.

Exemple :

\Anakeen\LogManager::info("Hello world");
\Anakeen\LogManager::error("Hum, a problem occurs");

# Paramétrage des sorties de log

# Modifier la sortie des flux par défaut

Les messages sont affichés avec le pattern suivant :

%channel%[%level_name%]{%user%}: %message% %context% %extra%

Cela affiche des messages de cette forme :

Anakeen Platform[INFO]{admin}: Ajout Doe Jane dans dossier Utilisateurs [] []
Anakeen Platform[INFO]{admin}: Test informatif  [] []

La méthode Anakeen\LogManager::setFormater() permet de modifier cette sortie

Exemple :

\Anakeen\LogManager::setFormater(new \Monolog\Formatter\LineFormatter("[%user%]-[%level_name%] => %message%"));

Cela fournira la sortie suivante :

[admin]-[INFO] => Ajout Doe Jane dans dossier Utilisateurs
[admin]-[INFO] => Test informatif  [] []

# Ajout d'un nouveau flux (stream) de log

Par défaut la plateforme est configurée pour utiliser le système syslog. Il est possible d'ajouter votre propre handler en utilisant la méthode Anakeen\LogManager::pushHandler().

De nombreux handlers sont disponibles grâce à monolog.

Exemple : ajouter un handler qui écrit dans un simple fichier.

\Anakeen\LogManager::pushHandler(
  new \Monolog\Handler\StreamHandler("/var/log/special", \Anakeen\LogManager::getLogLevel()) // Conformément au paramètre CORE_LOGLEVEL
);

# Aller plus loin dans la configuration

La méthode Anakeen\LogManager::getLogger() fournit l'objet Monolog\Logger. Il est possible de reconfigurer totalement l'objet de log pour l'adapter à votre besoin.