内容へ移動
Ground Sunlight
Windowsで作る - PHPプログラミングの開発環境
ユーザ用ツール
ログイン
サイト用ツール
検索
ツール
文書の表示
以前のリビジョン
バックリンク
最近の変更
メディアマネージャー
サイトマップ
ログイン
>
最近の変更
メディアマネージャー
サイトマップ
トレース:
apricot:ext:access-log
この文書は読取専用です。文書のソースを閲覧することは可能ですが、変更はできません。もし変更したい場合は管理者に連絡してください。
====== Apricot アクセスログ ====== --- //[[http://www.y2sunlight.com|y2sunlight]] 2020-05-06// [[apricot:top|Apricot に戻る]] 関連記事 * [[apricot:configuration|Apricot プロジェクトの作成]] * [[apricot:public|Apricot 公開フォルダ]] * [[apricot:core:top|Apricot コア]] * [[apricot:app:top|Apricot アプリ]] * Apricot 拡張 * [[apricot:ext:middleware|Apricot ミドルウェア]] * Apricot アクセスログ * [[apricot:ext:csrf|Apricot CSRF対策]] * [[apricot:ext:user-auth|Apricot ユーザ認証]] * [[apricot:ext:basic-auth|Apricot 基本認証]] * [[apricot:ext:session-auth|Apricot セッション認証]] * [[apricot:ext:interceptor|Apricot インターセプター]] * [[apricot:ext:di-container|Apricot DIコンテナー]] ミドルウェアの最初の例として、比較的簡単なアクセスログを作ってみましょう。アクセスログは一番外側のミドルウェアとして機能させます。 ---- ===== ミドルウェア ===== Apricotでは具体的なミドルウェアの実装はアプリ側の以下のフォルダに保存します。 <code> apricot [プロジェクト] | ├── app [アプリケーション] | | | └── Middleware [ミドルウェア] </code> 以下に、アクセスログの実装を示します。 {{fa>folder-open-o}} ** /apricot/app/Middleware ** <code php AccessLog.php> <?php namespace App\Middleware; use Core\Log; use Core\Input; use Core\Foundation\Response; use Core\Foundation\Invoker; use Core\Foundation\Middleware\Middleware; /** * アクセスログ - Middleware */ class AccessLog implements Middleware { /** * Process incoming requests and produces a response * {@inheritDoc} * @see \Core\Foundation\Middleware\Middleware::invoke() */ public function process(Invoker $next): Response { $message = session_id().' '.$_SERVER['REQUEST_METHOD'].' '.$_SERVER['REQUEST_URI']; // 前処理 $data = [ 'remote_addr' => $_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(); } } </code> * [[#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** <code php app.php> <?php return [ 'setup' =>[ ... ], 'middleware' =>[ \App\Middleware\AccessLog::class, /* Access log */ ], ... ]; </code> * middlewareにクラス( ''\App\Middleware\AccessLog::class'' )を追加します \\ ===== テスト実行 ===== アクセスログのテストをしてみましょう。ブラウザ上で以下のURLにアクセスしてみて下さい。 <code> http://localhost/ws2019/apricot/public/ </code> 以下のアクセスログが出力されていることを確認して下さい。 {{fa>folder-open-o}} ** /apricot/var/logs ** <code log apricot-2020-05-21.log> <code> [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":"[]"} </code> ■ その他の画面を表示してアクセスログを確認して下さい。\\ ■ 尚、[[apricot:core:basic-class#ロギング|ロギング]]の設定は以下の設定ファイルで行います。\\ <div indent> {{fa>file-o}} /apricot/config/setting/monolog.setting.php </div> \\
apricot/ext/access-log.txt
· 最終更新: 2020/06/08 11:00 by
tanaka
ページ用ツール
文書の表示
以前のリビジョン
バックリンク
文書の先頭へ