当前位置:首页 > 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 文件上传实现 HTML 表单设置 创建一个包含文件上传字段的 HTML 表单,确保表单的 enctype 属性设置为 multipart/form-data,这是文件上传必需的设置。 <…

php实现排序

php实现排序

PHP 数组排序方法 PHP 提供了多种内置函数用于数组排序,适用于不同的排序需求。以下是常见的排序方法: 按值升序排序 sort() 函数对数组按值升序排序,重置键名(索引数组适用): $num…

php实现文件的下载

php实现文件的下载

PHP 实现文件下载的方法 在 PHP 中实现文件下载功能通常需要设置正确的 HTTP 头信息,并输出文件内容。以下是几种常见的实现方式: 使用 header() 函数强制下载 通过设置 Conte…

php实现登陆

php实现登陆

PHP 实现登录功能 创建登录表单 在 HTML 文件中创建一个登录表单,包含用户名和密码输入框,表单的 action 属性指向处理登录的 PHP 文件。 <form action="logi…

php实现的进度条

php实现的进度条

PHP 实现的进度条方法 在 PHP 中实现进度条通常可以通过命令行脚本(CLI)或 Web 页面两种方式完成。以下是几种常见的实现方法: 命令行进度条 使用 PHP CLI 实现进度条,可以通过不…

php实现过程

php实现过程

PHP 实现过程 PHP 是一种广泛使用的服务器端脚本语言,特别适合 Web 开发。以下是 PHP 实现过程的关键步骤和注意事项。 安装与配置 下载并安装 PHP,可以从官方 PHP 网站获取最新版…