Use the log processing class developed by PHP. This class can customize a variety of log configurations and configure them according to the tags. It is convenient to call this class in the code for logging operations. Complete code and demonstration examples are provided for everyone to learn and use.
Function:
1. Customize the log root directory and log file name.
2. Customize the log directory using date and time format.
3. Automatically create non-existing log directories.
4. Record logs of different categories, such as information logs, warning logs, and error logs.
5. The log configuration can be customized, and the log calls different log configurations according to the label.
The code is as follows:
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');?>View the log file content:
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
This article explains the relevant content of the php log class. For more related knowledge, please pay attention to the php Chinese website.
Related recommendations:
How to combine multiple one-dimensional numbers into a two-dimensional array through PHP
About PHP based on Detailed explanation of the redis counter class
Explain the related methods of returning multiple columns specified in the array in PHP
The above is the detailed content of An explanation of the php log class. For more information, please follow other related articles on the PHP Chinese website!
php function to create a slug from a stringJul 23, 2025 am 12:38 AMTogenerateaURL-friendlysluginPHP,createacustomfunctionthatconvertsstringstolowercase,removesspecialcharacters,replacesspaceswithhyphens,andhandlesedgecaseslikeaccentsandduplicates.1)Normalizeaccentedcharactersusingiconv.2)Removenon-alphanumericcharac
How do you handle errors within a PHP function?Jul 22, 2025 am 04:48 AMTwo -trading reputable effectiveelyinphpfunctions, Usereturn Values Simple Rear Signing, ThrowExceptionForeserioussrors, Logerrorsinste Adofdisplayingthem, Andvalidatein Put Processing.ForSimpleissues, Return ValuesLikeFalseornullindicateErrors, Suchareturnine
php function to merge two arraysJul 22, 2025 am 04:47 AMThere are three common methods for merging arrays in PHP: 1. Use array_merge to merge the array, which will re-index the numeric keys and preserve the string keys, and the key values that appear later will overwrite the previous one; 2. Use operation to conform to the merge, retain the first key-value pair that appears, and will not overwrite; 3. Use array_merge_recursive to merge multi-dimensional arrays recursively to retain all hierarchical data. You can choose the appropriate method based on whether the key is repeated, whether it needs to be overwritten, and whether it is a nested structure.
How to pass an array to a php function?Jul 22, 2025 am 04:47 AMWhen passing an array to a function in PHP, the array can be directly passed as parameters. The steps are as follows: 1. Declare a parameter to receive the array when defining the function, without special syntax; 2. Pass it directly into the array when calling the function, and you can assign variables first or pass it directly; 3. If you use PHP7, you can add a type prompt array to ensure the correct parameter type and improve the clarity and robustness of the code; 4. When processing associated arrays, the function can access data through key-value pairs, which is suitable for the transfer and processing of structured data such as user information and configuration settings.
php function to check if a number is odd or evenJul 22, 2025 am 04:47 AMTodetermineifanumberisoddoreveninPHP,usethemodulusoperator(%)orabitwiseAND(&),withmodulusbeingthemostcommonandreadablemethod.1.Usingmodulus:return$number%2===0;returnstrueforevennumbers.2.Optionallyaddis_numeric()orfilter_var()tovalidateinputtype
php function to sort an array of objects by a propertyJul 22, 2025 am 04:46 AMTosortanarrayofobjectsbyaspecificpropertyinPHP,usetheusort()functionwithacustomcallback.1.Usethespaceshipoperatorforsimplepropertycomparisons,suchassortingbyanumericorstringproperty.2.Forstringproperties,thespaceshipoperatorworkswell,butrememberthatc
php function to resize an imageJul 22, 2025 am 04:46 AMThe most direct way to resize images using PHP is to use the GD library. 1. Load the original image; 2. Create a new canvas of the specified size; 3. Copy and resample the original image onto the new canvas. If the aspect ratio needs to be maintained, the target size is dynamically adjusted by calculating the aspect ratio. After the adjustment is completed, you can choose to output the image to the browser or save it to a file and use imagedestroy() to free up memory. When processing PNG images, transparent channel support is required. Make sure the GD library is enabled and verify the file type and size before processing uploaded images.
php function to convert array to stringJul 22, 2025 am 04:46 AMThere are four common ways to convert arrays into strings in PHP. 1. Use implode() to splice one-dimensional array elements, which is suitable for scenarios where only strings or numbers are simply spliced; 2. Use http_build_query() to retain key-value pairs and generate URL query strings, which are suitable for building request parameters or log records; 3. Use json_encode() to serialize array structures, which support multi-dimensional arrays and key-value pairs, which are suitable for API interfaces, storage or transmission; 4. Custom recursive functions to handle complex format requirements, such as nested structures or specific format output, which is suitable for highly customized scenarios. Choosing the appropriate method according to the array structure and purpose can improve the simplicity and robustness of the code.


Hot AI Tools

Undress AI Tool
Undress images for free

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

SublimeText3 Linux new version
SublimeText3 Linux latest version

Dreamweaver Mac version
Visual web development tools

Dreamweaver CS6
Visual web development tools

Safe Exam Browser
Safe Exam Browser is a secure browser environment for taking online exams securely. This software turns any computer into a secure workstation. It controls access to any utility and prevents students from using unauthorized resources.

SublimeText3 Mac version
God-level code editing software (SublimeText3)








