8.1.1 アクセスログを有効化する
リクエストの処理結果の確認や処理性能の分析では,リクエストごとに出力されるアクセスログが重要です。サポートサービスにお問い合わせいただく際,スナップショットログの中にアクセスログが含まれていると,スムーズに状況を解析できます。
Spring Bootの実行可能JAR/WAR形式の場合,デフォルトではアクセスログが無効になっています。application.propertiesなどを用いて,Spring Bootのプロパティを設定してアクセスログを有効化することを強く推奨します。設定を推奨するSpring Bootのプロパティ名と値を次の表に示します。
設定を推奨するSpring Bootのプロパティ名 |
推奨値 |
---|---|
server.tomcat.accesslog.enabled |
true |
server.tomcat.accesslog.locale |
en_US |
server.tomcat.accesslog.max-days |
デフォルト値の「-1」は無制限を意味するため,ログファイルが単調増加してしまいます。運用要件に合わせて有限の日数を指定してください。 |
server.tomcat.accesslog.pattern※ |
%h %{X-Forwarded-For}i %u %{[dd/MMM/yyyy:HH:mm:ss.SSS Z]}t "%r" %s %b %D %{ucar.rootap}r "%{Referer}i" "%{User-Agent}i" |
- 注※
-
server.tomcat.accesslog.patternプロパティに指定するアクセスログの推奨フォーマットを次に示します。
%h %{X-Forwarded-For}i %u %{[dd/MMM/yyyy:HH:mm:ss.SSS Z]}t "%r" %s %b %D %{ucar.rootap}r "%{Referer}i" "%{User-Agent}i"
下線部分は,デフォルトのフォーマットから追加または変更をしている項目です。追加,変更を推奨する理由を項目ごとに次の表に示します。
表8‒2 追加・変更を推奨するserver.tomcat.accesslog.patternプロパティの項目とその理由 追加・変更を推奨するserver.tomcat.accesslog.patternプロパティの項目
追加・変更を推奨する理由
%{X-Forwarded-For}i
ロードバランサやリバースプロキシを介している場合,%hでは次しか記録されません。
-
直近のロードバランサのホスト名またはIPアドレス
-
直近のリバースプロキシのホスト名またはIPアドレス
それらの接続元となっているWebクライアントを特定するために,X-Forwarded-Forヘッダの出力を推奨します。
%{dd/MMM/yyyy:HH:mm:ss.SSS Z}t
デフォルトのタイムスタンプは「秒単位」であるため,より精度の高い「ミリ秒単位」への変更を推奨します。
%D
デフォルトで使用される%Tは「秒単位」であるため,より精度の高い単位への変更を推奨します。%Dは,Tomcat 9.xの場合は「ミリ秒単位」,Tomcat 10.1.xの場合は「マイクロ秒単位」となります。
%{ucar.rootap}r
トレースログとアクセスログを対応づけるために,リクエストごとにトレース機能から付与されるルートアプリケーション情報の出力を推奨します(トレース機能によってServletRequestの属性「ucar.rootap」にルートアプリケーション情報の文字列が格納されています)。
%{Referer}i
ページ遷移元を特定するために,Refererヘッダの出力を推奨します。
%{User-Agent}i
Webクライアントの種別(OSやブラウザなど)を判別するのに有効となる可能性があるため,User-Agentヘッダの出力を推奨します。
-
「表8-1 設定を推奨するSpring Bootのプロパティ名と値」に示したもの以外のプロパティは任意に設定できます。
そのうち「server.tomcat.accesslog.directory」,「server.tomcat.accesslog.prefix」,「server.tomcat.accesslog.suffix」,および「server.tomcat.accesslog.file-date-format」をデフォルト値のまま使用した場合は,次のパスにアクセスログが出力されます。
<server.tomcat.basedirの指定値>/logs/access_log.<yyyy-MM-dd>.log
各プロパティ値や設定方法の詳細は,Spring Bootのドキュメント,およびTomcatのドキュメントを参照してください。
出力されたアクセスログは,スナップショットログ収集機能によって自動的にスナップショットログに収集されます。詳細は,「17. スナップショットログ収集機能」を参照してください。