apricot [プロジェクト]
|
├── app [アプリケーション]
| |
| └── Middleware [ミドルウェア]
以下に、アクセスログの実装を示します。
{{fa>folder-open-o}} ** /apricot/app/Middleware **
$_SERVER['REMOTE_ADDR'],
'remote_user' => array_key_exists('REMOTE_USER', $_SERVER) ?$_SERVER['REMOTE_USER'] : 'Anonymous',
'user_agent' => $_SERVER['HTTP_USER_AGENT'],
'input' => json_encode(Input::all()),
];
Log::info("$message",$data);
// 次のInvokerを呼び出す
return $next->invoke();
}
}
* [[#Middleware インターフェース|Middleware インターフェース]]の process() メソッドを実装します。
* パイプラインの次の処理の前後でログを取ることもできますが、ここでは、前処理としてログ出力を行います。
* [[apricot:core:basic-class#ロギングLog::info()]] メソッドでアクセスログを出力します。
* ログメッセージ
* セッションID ( ''session_id()'' )
* リクエストメソッド ( ''$_SERVER['REQUEST_METHOD']'' )
* リクエストURI ( ''$_SERVER['REQUEST_URI']'' )
* コンテキスト
* リモートIPアドレス ( ''$_SERVER['REMOTE_ADDR']'' )
* リモートユーザ ( ''$_SERVER['REMOTE_USER']'' )
* ユーザエージェント ( ''$_SERVER['HTTP_USER_AGENT']'' )
* フォームデータ ( ''Input::all()'' )
* 前処理の後、次の Invoker の invoke() メソッドを呼び出します。
\\
===== アプリケーション設定の変更 =====
上で作ったミドルウェア(AccessLog)をアプリケーションの設定ファイル(app.php)に追加します。
{{fa>folder-open-o}} ** /apricot/config**
[
...
],
'middleware' =>[
\App\Middleware\AccessLog::class, /* Access log */
],
...
];
* middlewareにクラス( ''\App\Middleware\AccessLog::class'' )を追加します
\\
===== テスト実行 =====
アクセスログのテストをしてみましょう。ブラウザ上で以下のURLにアクセスしてみて下さい。
http://localhost/ws2019/apricot/public/
以下のアクセスログが出力されていることを確認して下さい。
{{fa>folder-open-o}} ** /apricot/var/logs **
[2020-05-21T15:29:20.941358+09:00] apricot.INFO: 2qqabsldseqabgv9sksejslaic GET /ws2019/apricot/public/home {"remote_addr":"::1","remote_user":"Anonymous","user_agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36","input":"[]"}
■ その他の画面を表示してアクセスログを確認して下さい。\\
■ 尚、[[apricot:core:basic-class#ロギング|ロギング]]の設定は以下の設定ファイルで行います。\\
{{fa>file-o}} /apricot/config/setting/monolog.setting.php
\\