目的
今までファイルログを使ってきたが、
アプリケーションサーバが複数になるとログを追うのが大変になるので、
CloudWatch Logsでさくっと閲覧できるようにしたかった。
下準備
AWSでロググループの作成とロググループの作成を行います。
時間できたら手順書きます。
プログラムの処理
必要パッケージのインストール
$ composer require aws/aws-sdk-php
$ composer require maxbanton/cwh
プログラムの改修
設定ファイル fuel/app/config/cloudwatchlogs.php
の作成
fuel/app/config/cloudwatchlogs.php
<?php
return [
'client' => [
'credentials' => [
'key' => '<アクセスキー>',
'secret' => '<シークレットキー>',
],
'region' => 'ap-northeast-1',
'version' => 'latest',
],
'group' => '<ロググループ名>',
'retentionDays' => '<ログの保存期間(日)>',
];
fuel/app/classes/log.php
の作成
fuel/app/classes/log.php
<?php
class Log extends \Fuel\Core\Log
{
/**
* create the monolog instance
*/
public static function _init()
{
\Config::load('cloudwatchlogs', true);
$client = new Aws\CloudWatchLogs\CloudWatchLogsClient(\Config::get('cloudwatchlogs.client'));
$handler = new Maxbanton\Cwh\Handler\CloudWatch(
$client,
\Config::get('cloudwatchlogs.group', null), // ロググループ名
\Fuel::$env, // ログストリーム名
\Config::get('cloudwatchlogs.retentionDays', null),
10000
);
$logger = new \Monolog\Logger('cloudwatchlogs');
$logger->pushHandler($handler);
static::$monolog = $logger;
static::initialize();
}
}
fuel/app/bootstrap.php
に読み込むクラスを追記します。
fuel/app/bootstrap.php
\Autoloader::add_classes(array(
// Add classes you want to override here
'Log' => APPPATH . 'classes/corext/log.php', // この行を追記
));