当前位置:首页 > PHP

php代码实现日志

2026-03-13 13:53:30PHP

PHP 日志实现方法

内置 error_log 函数

PHP 提供了 error_log 函数,可将日志写入指定文件或系统日志:

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

第三个参数 3 表示写入文件,需确保目录有写入权限。

Monolog 日志库

Monolog 是 PHP 最流行的日志库,支持多处理器和格式化:

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

自定义日志类

php代码实现日志

创建简单的日志类实现基础功能:

class Logger {
    private $filePath;

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

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

$logger = new Logger('/path/to/logfile.log');
$logger->log('This is an info message');

日志级别处理

实现不同级别日志记录:

php代码实现日志

define('LOG_LEVEL_ERROR', 1);
define('LOG_LEVEL_WARNING', 2);
define('LOG_LEVEL_INFO', 3);

function write_log($message, $level = LOG_LEVEL_INFO) {
    $levels = [
        LOG_LEVEL_ERROR => 'ERROR',
        LOG_LEVEL_WARNING => 'WARNING',
        LOG_LEVEL_INFO => 'INFO'
    ];
    $logEntry = date('[Y-m-d H:i:s]') . " {$levels[$level]}: $message" . PHP_EOL;
    file_put_contents('/path/to/app.log', $logEntry, FILE_APPEND);
}

日志轮转实现

处理日志文件过大问题:

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

rotate_logs('/path/to/app.log');
write_log('New log entry after possible rotation');

数据库日志存储

将日志存入数据库的示例:

function log_to_db($message, $level = 'info') {
    $db = new PDO('mysql:host=localhost;dbname=logs', 'user', 'pass');
    $stmt = $db->prepare("INSERT INTO log_entries (level, message, created_at) VALUES (?, ?, NOW())");
    $stmt->execute([$level, $message]);
}

log_to_db('Database connection established', 'info');

标签: 代码日志
分享给朋友:

相关文章

淘宝css代码制作

淘宝css代码制作

在淘宝店铺装修中,CSS代码用于自定义页面样式,提升视觉体验。以下是关键方法和注意事项: 自定义模块样式 通过淘宝旺铺的“自定义模块”功能,可以插入CSS代码。代码需包裹在<style>…

vue抽奖代码实现

vue抽奖代码实现

Vue 抽奖代码实现 基础抽奖组件结构 使用 Vue 3 的 Composition API 实现抽奖功能,核心包括转盘动画、奖品列表和抽奖逻辑。以下为组件基础结构: <template>…

vue实现网站代码

vue实现网站代码

Vue 实现网站代码的基本步骤 安装 Vue.js 通过 npm 或 CDN 引入 Vue.js。使用 npm 安装:npm install vue。或者直接在 HTML 文件中引入 Vue CDN:…

vue实现代码插件

vue实现代码插件

Vue 实现代码插件的方法 使用第三方库(如 Prism.js 或 Highlight.js) 安装 Prism.js 或 Highlight.js 库,这些库专门用于代码高亮显示。在 Vue 项目中…

vue拖拽实现低代码

vue拖拽实现低代码

Vue拖拽实现低代码方案 基于现成库的方案(推荐) 使用成熟的拖拽库可以快速实现低代码功能,例如: vuedraggable:基于Sortable.js的Vue拖拽组件 vue-draggable-…

vue实现左右滑动代码

vue实现左右滑动代码

以下是一个基于 Vue 3 实现左右滑动功能的代码示例,结合手势识别和动画效果: 基础实现(使用 CSS 和事件监听) <template> <div class="slide…