当前位置:首页 > 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

示例代码:

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

数据库日志存储

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

$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等级别:

php日志怎么实现

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实现购物车

PHP实现购物车功能 购物车功能是电商网站的核心模块之一,通常涉及商品添加、删除、数量修改和结算等操作。以下是使用PHP实现购物车功能的几种方法。 使用Session存储购物车数据 Session是…

php队列的实现

php队列的实现

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

php 实现下载

php 实现下载

PHP 实现文件下载的方法 使用 PHP 实现文件下载可以通过设置 HTTP 头信息,强制浏览器将文件作为附件下载而非直接打开。 基本下载实现 $file_path = 'path/to/your/…

php 实现队列

php 实现队列

PHP 实现队列的方法 PHP 可以通过多种方式实现队列功能,以下是几种常见的实现方法: 使用数组实现队列 PHP 数组可以通过 array_push 和 array_shift 函数模拟队列的先进…

php实现mvc

php实现mvc

PHP 实现 MVC 架构 MVC(Model-View-Controller)是一种常用的软件设计模式,将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller…

php 线程实现

php 线程实现

PHP 线程实现方法 PHP 本身是单线程语言,但可以通过扩展或库实现多线程功能。以下是几种常见的实现方式: 使用 pthreads 扩展 pthreads 是一个 PHP 扩展,允许在 PHP 中…