运维部署
PHP日志系统实验:从零散记录到集中分析
背景需求
原系统使用简单的fwrite写日志,存在以下问题:
- 日志文件分散在多个目录,难以查找
- 没有日志级别区分,重要错误容易淹没在大量信息中
- 日志分析困难,无法进行关键词搜索和统计
- 日志文件不断增长,占用大量磁盘空间
搭建步骤
- 引入Monolog库:`composer require monolog/monolog`
- 配置Elasticsearch处理器:
use Monolog\Logger;
use Monolog\Handler\ElasticsearchHandler;
use Elasticsearch\ClientBuilder;
// 创建Elasticsearch客户端
$client = ClientBuilder::create()
->setHosts(['localhost:9200'])
->build();
// 创建日志记录器
$logger = new Logger('zxpn');
$logger->pushHandler(new ElasticsearchHandler($client, [
'index' => 'zxpn_logs',
'type' => '_doc',
'ignore_error' => true
]));
// 记录不同级别的日志
$logger->info('用户登录成功', ['user_id' => 123, 'ip' => $_SERVER['REMOTE_ADDR']]);
$logger->error('数据库连接失败', ['error' => $e->getMessage()]);
- 关键日志分类:
- 访问Kibana控制台:http://localhost:5601
- 创建索引模式:`zxpn_logs-*`
- 配置时间字段:`@timestamp`
- 创建仪表盘,添加以下可视化:
分享至: