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件のコメント