ホームページ >バックエンド開発 >PHPチュートリアル >PHPログクラスの説明
PHP によって開発されたログ処理クラスを使用します。このクラスは、さまざまなログ構成をカスタマイズし、タグに従って構成できます。ログ操作のコード内でこのクラスを呼び出すと便利です。誰もが学習して使用できるように、完全なコードとデモンストレーションの例が提供されています。
1. ログのルート ディレクトリとログ ファイル名をカスタマイズします。
2. 日付と時刻の形式を使用してログ ディレクトリをカスタマイズします。
3. 存在しないログ ディレクトリを自動的に作成します。
4. 情報ログ、警告ログ、エラーログなど、さまざまなカテゴリのログを記録します。
5. ログ構成はカスタマイズ可能であり、ログはラベルに従って異なるログ構成を呼び出します。
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);
}
}
?>
<?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');?>
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
この記事では、 php log クラスに関する詳細については、php 中国語 Web サイトを参照してください。
PHP を使用して複数の 1 次元数値を 2 次元配列に結合する方法
PHP ベースについてRedisカウンタークラスの詳しい説明
PHPで配列に指定した複数の列を返す関連メソッドを説明します
以上がPHPログクラスの説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。