Utilisez la classe de traitement des journaux développée en PHP. Cette classe peut personnaliser une variété de configurations de journaux et les configurer en fonction des balises. Il est pratique d'appeler cette classe dans le code pour les opérations de journalisation. Des exemples de code complets et de démonstration sont fournis pour que chacun puisse les apprendre et les utiliser.
1. Personnalisez le répertoire racine du journal et le nom du fichier journal.
2. Personnalisez le répertoire des journaux en utilisant le format de date et d'heure.
3. Créez automatiquement des répertoires de journaux inexistants.
4. Enregistrez les journaux de différentes catégories, tels que les journaux d'informations, les journaux d'avertissement et les journaux d'erreurs.
5. La configuration du journal peut être personnalisée et le journal appelle différentes configurations de journal en fonction des balises.
LOG.class.php
<?php/** * php日志类 * Date: 2017-08-27 * Author: fdipzone * Version: 1.0 * * Description: * 1.自定义日志根目录及日志文件名称。 * 2.使用日期时间格式自定义日志目录。 * 3.自动创建不存在的日志目录。 * 4.记录不同分类的日志,例如信息日志,警告日志,错误日志。 * 5.可自定义日志配置,日志根据标签调用不同的日志配置。 * * Func * public static set_config 设置配置 * public static get_logger 获取日志类对象 * public info 写入信息日志 * public warn 写入警告日志 * public error 写入错误日志 * private add 写入日志 * private create_log_path 创建日志目录 * private get_log_file 获取日志文件名称 */class LOG { // 日志根目录 private $_log_path = '.'; // 日志文件 private $_log_file = 'default.log'; // 日志自定义目录 private $_format = 'Y/m/d'; // 日志标签 private $_tag = 'default'; // 总配置设定 private static $_CONFIG; /** * 设置配置 * @param Array $config 总配置设定 */ public static function set_config($config=array()){ self::$_CONFIG = $config; } /** * 获取日志类对象 * @param Array $config 总配置设定 * @return Obj */ public static function get_logger($tag='default'){ // 根据tag从总配置中获取对应设定,如不存在使用default设定 $config = isset(self::$_CONFIG[$tag])? self::$_CONFIG[$tag] : (isset(self::$_CONFIG['default'])? self::$_CONFIG['default'] : array()); // 设置标签 $config['tag'] = $tag!='' && $tag!='default'? $tag : '-'; // 返回日志类对象 return new LOG($config); } /** * 初始化 * @param Array $config 配置设定 */ public function __construct($config=array()){ // 日志根目录 if(isset($config['log_path'])){ $this->_log_path = $config['log_path']; } // 日志文件 if(isset($config['log_file'])){ $this->_log_file = $config['log_file']; } // 日志自定义目录 if(isset($config['format'])){ $this->_format = $config['format']; } // 日志标签 if(isset($config['tag'])){ $this->_tag = $config['tag']; } } /** * 写入信息日志 * @param String $data 信息数据 * @return Boolean */ public function info($data){ return $this->add('INFO', $data); } /** * 写入警告日志 * @param String $data 警告数据 * @return Boolean */ public function warn($data){ return $this->add('WARN', $data); } /** * 写入错误日志 * @param String $data 错误数据 * @return Boolean */ public function error($data){ return $this->add('ERROR', $data); } /** * 写入日志 * @param String $type 日志类型 * @param String $data 日志数据 * @return Boolean */ private function add($type, $data){ // 获取日志文件 $log_file = $this->get_log_file(); // 创建日志目录 $is_create = $this->create_log_path(dirname($log_file)); // 创建日期时间对象 $dt = new DateTime; // 日志内容 $log_data = sprintf('[%s] %-5s %s %s'.PHP_EOL, $dt->format('Y-m-d H:i:s'), $type, $this->_tag, $data); // 写入日志文件 if($is_create){ return file_put_contents($log_file, $log_data, FILE_APPEND); } return false; } /** * 创建日志目录 * @param String $log_path 日志目录 * @return Boolean */ private function create_log_path($log_path){ if(!is_dir($log_path)){ return mkdir($log_path, 0777, true); } return true; } /** * 获取日志文件名称 * @return String */ private function get_log_file(){ // 创建日期时间对象 $dt = new DateTime; // 计算日志目录格式 return sprintf("%s/%s/%s", $this->_log_path, $dt->format($this->_format), $this->_log_file); } } ?>
demo.php
<?phprequire 'LOG.class.php';define('LOG_PATH', dirname(__FILE__).'/logs');// 总配置设定$config = array( 'default' => array( 'log_path' => LOG_PATH, // 日志根目录 'log_file' => 'default.log', // 日志文件 'format' => 'Y/m/d', // 日志自定义目录,使用日期时间定义 ), 'user' => array( 'log_path' => LOG_PATH, 'log_file' => 'user.log', 'format' => 'Y/m/d', ), 'order' => array( 'log_path' => LOG_PATH, 'log_file' => 'order.log', 'format' => 'Y/m/d', ), );// 设置总配置LOG::set_config($config);// 调用日志类,使用默认设定$logger = LOG::get_logger();$logger->info('Test Add Info Log');$logger->warn('Test Add Warn Log');$logger->error('Test Add Error Log');// 调用日志类,使用user设定$logger1 = LOG::get_logger('user');$logger1->info('Test Add User Info Log');$logger1->warn('Test Add User Warn Log');$logger1->error('Test Add User Error Log');// 调用日志类,使用order设定$logger2 = LOG::get_logger('order');$logger2->info('Test Add Order Info Log');$logger2->warn('Test Add Order Warn Log');$logger2->error('Test Add Order Error Log');// 调用日志类,设定类型不存在,使用默认设定$logger3 = LOG::get_logger('notexists');$logger3->info('Test Add Not Exists Info Log');$logger3->warn('Test Add Not Exists Warn Log');$logger3->error('Test Add Not Exists Error Log');?>
Afficher le contenu du fichier journal :
ls -lt ./logs/2017/08/27/*.log./logs/2017/08/27/default.log./logs/2017/08/27/order.log./logs/2017/08/27/user.logcat ./logs/2017/08/27/default.log[2017-08-27 13:50:13] INFO - Test Add Info Log[2017-08-27 13:50:13] WARN - Test Add Warn Log[2017-08-27 13:50:13] ERROR - Test Add Error Log[2017-08-27 13:50:13] INFO notexists Test Add Not Exists Info Log[2017-08-27 13:50:13] WARN notexists Test Add Not Exists Warn Log[2017-08-27 13:50:13] ERROR notexists Test Add Not Exists Error Logcat ./logs/2017/08/27/order.log[2017-08-27 13:50:13] INFO order Test Add Order Info Log[2017-08-27 13:50:13] WARN order Test Add Order Warn Log[2017-08-27 13:50:13] ERROR order Test Add Order Error Logcat ./logs/2017/08/27/user.log[2017-08-27 13:50:13] INFO user Test Add User Info Log[2017-08-27 13:50:13] WARN user Test Add User Warn Log[2017-08-27 13:50:13] ERROR user Test Add User Error Log
Cet article explique php Pour le contenu lié aux journaux, veuillez prêter attention au site Web chinois PHP pour plus de connaissances connexes.
Recommandations associées :
Comment combiner plusieurs tableaux unidimensionnels en un tableau bidimensionnel via PHP
À propos des détails basés sur PHP explication de la classe de compteur Redis
Explication des méthodes associées pour renvoyer plusieurs colonnes spécifiées dans le tableau php
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!