はじめに
以前は使用できていたmaxbanton/cwh
のライブラリが
Laravel 10で使用できない状況に陥ったので対処策を入れてみました。
本編
事象について
AWS✖️Laravelでログ機能をCloudWatchで実装する際に
以下のライブラリを使用しようとするとエラーが出ることが判明しました。
Laravel 10より以前は使えていたのですが、
どうやらLaravel 10でMonolog 3にアップデートにされたことに伴い、
Monologの引数が配列→Monolog\LogRecord
に型が変わったために
以下のようなエラーが発生し、実行できなくなっていたようです
Declaration of write(array $record) must be compatible with write(Monolog\LogRecord $record)
解決策
ライブラリのファイルを複製して
該当箇所の型を書き換えたハンドラークラスを作成することで
無事に実行できるようになりました
一例として置いておきます。
【前提】
composer require maxbanton/cwh
をインストールして
使用しようとしていたものと想定しています。
【解消方法】
-
以下に格納されているライブラリの実体ファイルをコピーし、
自分のプロジェクト配下に配置する(以後MyCloudWatch
クラスとする)./vendor/maxbanton/cwh/src/Handler/CloudWatch.php
-
(tanerincode 氏のコミットを参考に)変更内容を反映する
-
元の
CloudWatch
クラスを使用している実装箇所を、
MyCloudWatch
を向くように置き換える
use Maxbanton\Cwh\Handler\CloudWatch;
class hoge{
public function huga(){
$handler = new CloudWatch(....略....);
}
}
↓
use MyHandler\CloudWatch;
class hoge{
public function huga(){
$handler = new CloudWatch(....略....);
}
}
おわりに
国内外問わず開発者さんのGithubなどに上がっているソースコードを見てみると
ありがたいことに解消PRが見つかったりしますね
英語を恐れず(Google翻訳をお供に)根気強く探してみることが
大事だなと改めて認識するなどしました。
参考記事
Special Thanks!! :)
tanerincode 氏
ちいかわ部隊の皆さん(身内ネタ)