当前位置:首页 > 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 实现验证码

使用 PHP 生成验证码 验证码(CAPTCHA)用于防止自动化脚本提交表单,以下是几种常见的 PHP 实现方法。 使用 GD 库生成图片验证码 GD 库是 PHP 的图像处理扩展,可用于生成验证码…

php实现过程

php实现过程

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

php数据库实现

php数据库实现

PHP 连接 MySQL 数据库 使用 mysqli 扩展连接 MySQL 数据库: <?php $servername = "localhost"; $username = "usernam…

php 实现链表

php 实现链表

PHP 实现链表的方法 链表是一种线性数据结构,由节点组成,每个节点包含数据和指向下一个节点的指针。PHP 中可以通过类和对象来实现链表。 定义链表节点类 创建一个 ListNode 类,用于表示链…

php 购物车实现session

php 购物车实现session

PHP 购物车实现(基于 Session) 在 PHP 中,使用 Session 实现购物车功能是一种常见方法。Session 可以跨页面存储用户数据,适合临时保存购物车信息。 初始化 Sessio…

php实现重定向

php实现重定向

使用header函数进行重定向 在PHP中,header()函数是实现重定向的常用方法。通过发送HTTP头信息Location,浏览器会自动跳转到指定URL。需确保在调用header()前没有输出任何…