php日志实现
PHP日志实现方法
使用内置函数error_log
PHP的error_log函数可直接将日志写入文件或系统日志。示例代码:
error_log("This is an error message", 3, "/path/to/error.log");
第三个参数指定日志文件路径,数字3表示写入文件。其他选项包括发送邮件(1)或发送到系统日志(0)。
Monolog库
Monolog是PHP最流行的日志库,支持多种处理器和格式化方式。安装命令:
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');
自定义日志类
创建简单的日志类实现日志分级和轮转:
class Logger {
private $logFile;
public function __construct($filePath) {
$this->logFile = $filePath;
}
public function log($message, $level = 'INFO') {
$time = date('Y-m-d H:i:s');
$logEntry = "[$time][$level] $message" . PHP_EOL;
file_put_contents($this->logFile, $logEntry, FILE_APPEND);
}
}
框架内置日志系统
Laravel等框架提供内置日志系统。Laravel示例:
Log::emergency($message);
Log::alert($message);
Log::critical($message);
Log::error($message);
Log::warning($message);
Log::notice($message);
Log::info($message);
Log::debug($message);
日志最佳实践
日志文件应设置适当权限,避免敏感信息记录。定期归档和清理旧日志文件,防止磁盘空间耗尽。生产环境建议使用syslog或专业日志服务如ELK、Graylog等集中管理日志。
错误报告配置
在php.ini中设置错误日志路径:
log_errors = On
error_log = /path/to/php_errors.log
或在运行时配置:
ini_set('log_errors', 1);
ini_set('error_log', '/path/to/php_errors.log');





