当前位置:首页 > PHP

php日志怎么实现

2026-02-16 22:30:08PHP

PHP日志实现方法

使用内置函数error_log

PHP内置error_log()函数可将日志写入指定文件或系统日志。默认配置在php.ini中设置,可通过error_log指令指定路径。

error_log("This is an error message", 3, "/path/to/error.log");

配置php.ini

修改php.ini文件中的日志相关参数,控制全局日志行为:

log_errors = On
error_log = /var/log/php_errors.log
error_reporting = E_ALL

自定义日志类

创建封装类实现更灵活的日志管理,支持不同级别和存储方式:

class Logger {
    public static function log($message, $level = 'INFO') {
        $logEntry = date('[Y-m-d H:i:s]') . " [$level] $message" . PHP_EOL;
        file_put_contents('/path/to/app.log', $logEntry, FILE_APPEND);
    }
}

使用Monolog库

通过Composer安装Monolog实现高级日志功能:

composer require monolog/monolog

示例代码:

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');

框架集成日志

主流框架内置日志组件:

  • Laravel:通过Log门面
    use Illuminate\Support\Facades\Log;
    Log::emergency($message);
  • Symfony:使用Monolog组件
  • CodeIgniter:通过log_message()函数

日志分割与归档

结合Linux的logrotate工具或实现自定义分割逻辑:

if (filesize('app.log') > 1024*1024) {
    rename('app.log', 'app.' . date('YmdHis') . '.log');
}

数据库日志存储

将日志写入数据库便于查询分析:

php日志怎么实现

$stmt = $pdo->prepare("INSERT INTO logs (level, message, created_at) VALUES (?, ?, ?)");
$stmt->execute([$level, $message, date('Y-m-d H:i:s')]);

错误处理器注册

通过set_error_handler捕获所有PHP错误:

set_error_handler(function($errno, $errstr, $errfile, $errline) {
    error_log("Error [$errno] $errstr in $errfile on line $errline");
    return true;
});

性能日志记录

使用microtime记录执行耗时:

$start = microtime(true);
// 业务代码
$elapsed = round((microtime(true) - $start)*1000, 2);
file_put_contents('perf.log', "Execution took {$elapsed}ms", FILE_APPEND);

日志级别控制

实现分级日志管理,区分DEBUG/INFO/WARNING等级别:

define('LOG_LEVEL', 'DEBUG');

function write_log($message, $level) {
    if (array_search($level, ['DEBUG','INFO','WARNING','ERROR']) 
        >= array_search(LOG_LEVEL, ['DEBUG','INFO','WARNING','ERROR'])) {
        error_log("[$level] $message");
    }
}

标签: 日志php
分享给朋友:

相关文章

php实现图片上传

php实现图片上传

实现图片上传的基本步骤 创建HTML表单用于文件上传,表单需设置enctype="multipart/form-data"属性,确保文件数据正确传输。 <form action="upload…

php实现

php实现

PHP 实现的基本方法 PHP 是一种服务器端脚本语言,广泛用于 Web 开发。以下是 PHP 实现的一些常见方法。 变量与数据类型 PHP 变量以 $ 开头,支持多种数据类型: $nam…

php实现登录

php实现登录

PHP 登录功能实现 数据库连接与用户表创建 创建一个数据库连接文件 db.php,用于管理数据库连接。MySQL 示例代码如下: <?php $host = 'localhost'; $db…

php 购物车实现

php 购物车实现

数据库设计 购物车功能通常需要设计数据库表存储商品和用户信息。常见的表包括products(商品表)、users(用户表)和cart(购物车表)。cart表通常包含字段:id(主键)、user_id(…

php验证码的实现

php验证码的实现

PHP 验证码实现方法 使用 GD 库生成基础验证码 创建画布并生成随机字符串作为验证码内容: session_start(); $width = 120; $height = 40; $image…

php实现分类

php实现分类

PHP实现分类的方法 数据库设计 创建分类表时,通常需要包含id、名称、父级id等字段。父级id用于实现多级分类结构。 CREATE TABLE categories ( id INT AU…