Prestashop : Mise en place de logs rapides dans un fichier

Cet article est assez ancien, malgré toute l'attention que j' apporte à mes contenus il est possible que celui-ci ne soit plus d'actualité.
N'hésitez pas à me le signaler si nécessaire via le formulaire de contact.

Voici un code qui vous permettra de logguer facilement et rapidement les informations souhaitées sous Prestashop dans le fichier de votre choix.

L’objectif est de pouvoir logguer les informations souhaitées en une seule ligne, sans avoir à instancier de classe de log.
(Le fonctionnement est comparable à la fonction Mage::log() de Magento )

Créer une nouvelle classe dans le dossier override/classes/CustomLogger.php

 <?php
class CustomLogger
{
 
    /** Fichier de log par défaut */
    const DEFAULT_LOG_FILE = 'system.log';
 
    /**
     * Log
     * @param string|array|object $message element à logger ( 1 type à la fois )
     * @param string $level niveau de log
     * @param string $fileName nom du fichier de log
     */
    public static function log($message, $level = 'debug', $fileName = null)
    {
 
        $fileDir = _PS_ROOT_DIR_ . '/log/';
 
        if (!$fileName)
            $fileName = self::DEFAULT_LOG_FILE;
 
        if (is_array($message) || is_object($message)) {
            $message = print_r($message, true);
        }
 
        $formatted_message = '*' . $level . '* ' . " -- " . date('Y/m/d - H:i:s') . ': ' . $message . "\r\n";
 
        return file_put_contents($fileDir . $fileName, $formatted_message, FILE_APPEND);
    }
 
}

Vous pouvez ensuite logguer les informations souhaitées à n’importe quel endroit dans les fichiers php de Prestashop via la commande suivante

//Log dans le fichier log/system.log, niveau debug
CustomLogger::log('Mon message de log');
//Log dans le fichier log/system.log, niveau warning
CustomLogger::log('Mon message de log','warning');
//Log dans le fichier log/myfile.log, niveau warning
CustomLogger::log('Mon message de log','warning','myfile.log');

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *