Viewクラスのコンストラクタの第5引数の「$logger」について
System\View\View.php

Logger $logger = null

となっているが、これでは、サードパーティ製のLoggerが使用できない。
このようにエラーとなる。

CRITICAL: Argument 5 passed to CodeIgniter\View\View::__construct() must be an instance of CodeIgniter\Log\Logger or null, instance of App\Libraries\MyLogger given, called in /app/ci4/ci4/system/Config/Services.php on line 497

ドキュメントには、サードパーティ製Logger使えますよって書かれているんだけどね。
タイプヒントの「Logger」は「CodeIgniter\Log\Logger」クラスが指定されている。
Controllerクラスを見たところ
「LoggerInterface $logger」となっている。
これだと、Psr3のLoggerInterfaceなので、インターフェースが一致すればOK。
なのでViewクラスも同様にするとmonologが使用できるようになった。

-use CodeIgniter\Log\Logger;
+use Psr\Log\LoggerInterface;

-public function __construct($config, string $viewPath = null, $loader = null, bool $debug = null, Logger $logger = null)
+public function __construct($config, string $viewPath = null, $loader = null, bool $debug = null, LoggerInterface $logger = null)

2018/10/29 追記

issueを作成したところ、内容はただしかったので、developブランチへマージされました。


0件のコメント

コメントを残す

アバタープレースホルダー

メールアドレスが公開されることはありません。 が付いている欄は必須項目です