php实现日志输出
PHP 实现日志输出的方法
使用 error_log 函数
PHP 内置的 error_log 函数可以直接将日志写入文件或系统日志。
语法:error_log(string $message, int $message_type = 0, string $destination = null, string $extra_headers = null)
示例代码:
error_log("This is an error message", 3, "/path/to/logfile.log");
message_type 为 3 时表示写入文件,需确保目录可写。
使用 file_put_contents 追加写入
通过 FILE_APPEND 标志实现日志追加:
$logMessage = date('Y-m-d H:i:s') . " - Log message here\n";
file_put_contents('/path/to/logfile.log', $logMessage, FILE_APPEND);
需注意文件权限问题,确保 PHP 有写入权限。
自定义日志类封装
封装一个可复用的日志类,支持分级和格式化:
class Logger {
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\n";
file_put_contents($this->logFile, $logEntry, FILE_APPEND);
}
}
// 使用示例
$logger = new Logger('/path/to/app.log');
$logger->log('User logged in', 'INFO');
使用 Monolog 库(推荐)
Monolog 是 PHP 生态中功能强大的日志库,支持多处理器和格式化:
- 安装:
composer require monolog/monolog - 基础用法:
use Monolog\Logger; use Monolog\Handler\StreamHandler;
$log = new Logger('name'); $log->pushHandler(new StreamHandler('/path/to/app.log', Logger::WARNING));
$log->warning('This is a warning'); $log->error('This is an error');

支持日志级别(DEBUG, INFO, NOTICE, WARNING, ERROR 等)和多种输出方式(文件、邮件、Slack 等)。
#### 注意事项
- 日志轮转:长期运行的日志需定期切割,可通过 `logrotate` 工具或代码实现。
- 敏感信息过滤:避免记录密码、密钥等敏感数据。
- 性能优化:高频日志建议使用异步写入或缓冲机制。






