CodeIgniter4でMonologを使う
7820 ワード
CodeIgniter4でMonologを使うように設定してみます。
CodeIgniter4はPSR-3に準拠していますので、PSR-3準拠のロガーなら簡単に置き換えることができます。
動作確認環境
- CodeIgniter 4.1.4
- Composer 2.1.6
- Monolog 2.3.4
- PHP 8.0.10
- macOS 10.15.7
Monologのインストール
ComposerでMonologをインストールします。
$ composer require monolog/monolog
Servicesの設定
CodeIgniter4の Services で logger
を設定します。
app/Config/Services.php
:
<?php
namespace Config;
use CodeIgniter\Config\BaseService;
use Monolog\Logger;
use Monolog\Handler\StreamHandler;
use Psr\Log\LoggerInterface;
class Services extends BaseService
{
public static function logger($getShared = true): LoggerInterface
{
if ($getShared) {
return static::getSharedInstance('logger');
}
$log = new Logger('ci4');
$logFile = WRITEPATH.'logs/app.log';
$log->pushHandler(new StreamHandler(
$logFile,
Logger::DEBUG,
true,
null,
true
));
return $log;
}
}
Config\Services::logger()
を追加します。Monologをインスタンス化し、設定し、そのインスタンスを返します。
使い方
ログを出力する
log_message()
がそのまま使えます。
log_message('error', 'This is error log.');
以下のようにログファイルに記録されました。
writable/logs/app.log
:
[2021-09-16T09:11:47.125967+09:00] ci4.ERROR: This is error log. [] []
Monologインスタンスを取得する
CodeIgniter4の Services から logger を取得します。
$logger = service('logger');
$logger = \Config\Services::logger();
これで、Monolog\Logger
オブジェクトが取得できます。
参考
- https://github.com/Seldaek/monolog
- https://codeigniter4.github.io/CodeIgniter4/general/logging.html#using-third-party-loggers
- Services — CodeIgniter 4.1.4 documentation
- PatreonでのServices in CodeIgniter 4 | Lonnie Ezell
Author And Source
この問題について(CodeIgniter4でMonologを使う), 我々は、より多くの情報をここで見つけました https://zenn.dev/kenjis/articles/bd4b94d162bc5a著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Collection and Share based on the CC protocol