当前位置:首页 > PHP

php实现记录

2026-01-29 14:43:16PHP

PHP实现日志记录的方法

使用PHP内置函数error_log记录日志 error_log函数可以将日志信息写入到指定位置,支持文件、系统日志或邮件发送。语法如下:

error_log("Error message", 3, "/path/to/error.log");

配置PHP错误日志路径 在php.ini文件中设置以下参数:

log_errors = On
error_log = /path/to/php_errors.log

使用Monolog日志库

安装Monolog 通过Composer安装Monolog:

composer require monolog/monolog

基本使用示例

require 'vendor/autoload.php';
use Monolog\Logger;
use Monolog\Handler\StreamHandler;

$log = new Logger('name');
$log->pushHandler(new StreamHandler('path/to/your.log', Logger::WARNING));
$log->warning('This is a warning');

自定义日志类实现

创建日志类

class CustomLogger {
    private $logFile;

    public function __construct($filePath) {
        $this->logFile = $filePath;
    }

    public function log($message, $level = 'INFO') {
        $timestamp = date('Y-m-d H:i:s');
        $logEntry = "[$timestamp][$level] $message" . PHP_EOL;
        file_put_contents($this->logFile, $logEntry, FILE_APPEND);
    }
}

使用示例

$logger = new CustomLogger('/path/to/logfile.log');
$logger->log('This is an informational message');
$logger->log('Something went wrong', 'ERROR');

数据库日志记录

创建日志表

CREATE TABLE system_logs (
    id INT AUTO_INCREMENT PRIMARY KEY,
    level VARCHAR(20),
    message TEXT,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    ip_address VARCHAR(45)
);

PHP实现数据库日志

function logToDatabase($message, $level = 'INFO') {
    $db = new PDO('mysql:host=localhost;dbname=yourdb', 'user', 'pass');
    $stmt = $db->prepare("INSERT INTO system_logs (level, message, ip_address) 
                         VALUES (?, ?, ?)");
    $stmt->execute([$level, $message, $_SERVER['REMOTE_ADDR']]);
}

日志轮转和归档

实现日志文件轮转

function rotateLog($filePath, $maxSize = 1048576) {
    if (file_exists($filePath) && filesize($filePath) >= $maxSize) {
        $backupFile = $filePath . '.' . date('YmdHis');
        rename($filePath, $backupFile);
    }
}

定时清理旧日志

php实现记录

function cleanOldLogs($dir, $daysToKeep = 30) {
    $files = glob($dir . '/*.log*');
    $now = time();

    foreach ($files as $file) {
        if (is_file($file) && ($now - filemtime($file)) > ($daysToKeep * 86400)) {
            unlink($file);
        }
    }
}

标签: php
分享给朋友:

相关文章

php 实现购物车

php 实现购物车

PHP 实现购物车功能 购物车功能是电子商务网站的核心部分,可以通过 PHP 和 Session 或数据库来实现。以下是两种常见的实现方式: 使用 Session 存储购物车数据 Session 是…

php队列的实现

php队列的实现

PHP队列的实现方式 PHP中实现队列功能可以通过多种方式,根据需求选择适合的方案: 使用数组实现基础队列 PHP数组本身支持队列操作,利用array_push和array_shift函数: $q…

php 队列的实现

php 队列的实现

PHP 队列的实现方法 使用数据库实现队列 创建一个数据表存储队列任务,包含任务ID、状态、创建时间等字段。通过SQL语句实现任务的入队和出队操作。 // 入队操作 INSERT INTO queu…

php mvc实现

php mvc实现

PHP MVC 实现步骤 模型(Model)层 模型负责数据处理和业务逻辑,通常与数据库交互。创建一个基类模型,其他具体模型继承它。 class Model { protected $db;…

php实现支付宝支付

php实现支付宝支付

支付宝支付集成步骤 准备工作 在开始集成支付宝支付前,确保已注册支付宝开放平台账号并完成企业实名认证。创建应用后获取APPID、应用私钥和支付宝公钥。 配置支付宝SDK 通过Composer安装支付…

php搜索功能的实现

php搜索功能的实现

实现PHP搜索功能的方法 数据库搜索 使用SQL的LIKE语句进行模糊匹配,适用于简单的搜索需求。 $searchTerm = $_GET['search']; $query = "SELECT *…