We've been making changes to how we organize and display our docs. Our work isn't done but we'd love your feedback.
Getting started
Basics
Domains & Origins
Performance

Configuration
Basics
Conditions
Dictionaries
Domains & Origins
Request settings
Cache settings
Headers
Responses
Performance
Custom VCL
Image optimization
Video

Security
Access Control Lists
Monitoring and testing
Securing communications
TLS
Web Application Firewall

Integrations
Logging endpoints
Non-Fastly services

Diagnostics
Streaming logs
Debugging techniques
Common errors

Account info
Account management
Billing
User access and control

Reference

    カスタムログ形式

      Last updated May 08, 2019

    Fastly のカスタムログ形式は2つのバージョンがあります。新規のログエンドポイントはデフォルトでバージョン2のログ形式となります。バージョン1のログエンドポイントをバージョン2のログ形式にアップグレードすることができます。また、継続性を考慮してバージョン1形式に見えるバージョン2の作成を行うことも可能です。下記のバージョン2のログ形式の主な利点についても説明しています。

    バージョン2のログ形式

    この表は Fastly のバージョン2のログ形式についての詳細を記載しています。表に示すように、すべての変数の先頭にパーセント記号( % )を付ける必要があります。

    書式 説明
    %% パーセント記号。
    %a リクエストのクライアント IP アドレス。
    %A ローカル IP アドレス。
    %B HTTP ヘッダーを除く、レスポンスサイズ(バイト)。
    %b HTTP ヘッダーを除く、レスポンスサイズ(バイト)。Common Log Format(CLF)では、送信データがないときは「0」ではなく「 "-" 」となります。
    %{Foobar}C サーバに送信されたリクエストのCookie Foobarの内容。
    %D               リクエストを処理するのにかかった時間(マイクロ秒)。
    %{FOOBAR}e サポートしておりません。常に "-" を返します。
    %f ファイル名。
    %h リモート IP アドレス。
    %H リクエストのプロトコル。
    %{Foobar}i サーバに送信されたリクエストヘッダー Foobarの内容。
    %I リクエストとヘッダーを含む受信バイト数。ゼロになることはありません。
    %k この接続で処理されたキープアライブリクエストの数。常に0を返します。
    %l サポートしておりません。常に "-" を返します。
    %m リクエストメソッド。
    %{Foobar}n サポートしておりません。常に "-" を返します。
    %{Foobar}o レスポンスの Foobar: ヘッダ行の内容。
    %O ヘッダーを含む送信バイト数。ゼロになることはありません。
    %p リクエストを処理するサーバーの正規のポート。常に 80 を返します。
    %{format}p リクエストを処理するサーバーの正規のポート。format に使えるのは canonical localremoteです。HTTP リクエストの場合は 80、HTTPS リクエストの場合は 443 を返します。
    %P サポートしておりません。常に "-" を返します。
    %{format}P サポートしておりません。常に "-" を返します。
    %q クエリ文字列( 存在する場合は前に ? が追加されます。存在しない場合は空文字列となります)。
    %r リクエストの最初の行。
    %R サポートしておりません。常に "-" を返します。
    %s ステータス。内部的にリダイレクトされたリクエストの場合、これは元のリクエストのステータスです。最終ステータスは %>s を使います。
    %t リクエストが受信された時刻。標準の英語形式(例 01/Jan/1970:00:00:00 -0700)。最後の数字は GMT からのタイムゾーンオフセットを示します。
    %{format}t       format で与えられた形式の時刻。strftime(3) 形式でなければいけません(ローカライズされている可能性あり)。書式が begin: (デフォルト)で始まる場合、リクエスト処理の開始時に時間が取得されます。end: で始まっている場合には、ログエントリーが書き込まれた時刻で、リクエスト処理の終了時刻に近くなります。strftime(3) でサポートされている形式に加えて、 以下の形式もサポートされています。sec(UNIX エポックからの秒数)、 msec(UNIX エポックからのミリ秒数)、 usec(UNIX エポックからのマイクロ秒数)、msec_frac(ミリ秒数部分)、usec_frac(マイクロ秒数部分)。
    %T               リクエストを処理するのにかかった時間(秒)。
    %u サポートしておりません。常に "-" を返します。
    %U リクエストの URL パス。クエリ文字列は含まれません。
    %v               リクエストのドメイン名。%{req.http.host}V と同じになります。
    %V               %v と同じです。
    %{vcl}V         VCL 変数は引用符なしでインクルードします。VCL 変数をログに書き込むために使用できます(例 :%{client.geo.country_code}V, %{tls.client.cipher}V)。この %- のディレクティブは Fastly の拡張機能であり、Apache では存在しません。
    %X 応答が完了したときの接続ステータス。常に + (レスポンスが送信された後に接続が維持される) を設定します。

    バージョン1のログ形式

    この表は Fastly のバージョン1のログ形式についての詳細を記載しています。表に示すように、すべての変数の先頭にパーセント記号(%)を付ける必要があります。

    書式 説明
    %b レスポンスサイズ。実際にレスポンスの長さをチェックするのではなく、 Content-Lengthヘッダを使って計算されます(したがって、間違っている可能性があります)。
    %h リモート IP アドレス。
    %l リモートログ名。常に "-" を返します。
    %r HTTP 動詞とリクエストパス(例えば、 GET / index.html)。Apache およびバージョン2のログ形式とは異なり、プロトコルのバージョンは含まれません。
    %>s 最後のリクエストのステータス。
    %t リクエストを受信した時刻。Unixの ctime 形式(例:Thu, 01 Jan 1970 00:00:00 GMT)で、Apacheの標準英語フォーマットではありません(例:01/Jan/1970:00:00:00 -0700)。
    %u 常に "-" を返します。

    バージョン2のログ形式へのアップグレード

    ログエンドポイントをバージョン2ログ形式にアップグレードするには、次の手順に従ってください。

    1. Fastly コントロールパネルにログインし、Configure のリンクをクリックします。
    2. サービスメニューから設定対象のサービスを選択します。
    3. Configuration ボタンをクリックし、Clone active を選択すると設定画面が開きます。
    4. Logging リンクをクリックします。Logging endpoints 設定画面を開きます。バージョン1のログ形式を使用するログエンドポイントがある場合は、それらが更新可能であることを示すメッセージが表示されます。

      the logging endpoints page with upgrade message

    5. ログエンドポイントの名前をクリックして編集します。Edit this endpoint ページが表示されます。

      the edit logging endpoint page with upgrade message

    6. Convert to Log Format Version 2 ボタンをクリックします。Convert to log format version 2 ページが表示されます。

      the convert to log format version 2 window

    7. 出力形式を選択する:
      • Use compatible output を使用することを推奨します。この設定では、タイムスタンプの文字列は変更されませんが、ログの書式は変更されます。新しい形式は Apache のログ形式と互換性があります。
      • Maintain legacy output はバージョン2形式ですが、生成されるログ文字列は同じになります。これは、%t%{now}V に、%r%{req.url}V に、%b%{resp.http.Content-Lenght}V となることを意味します。
    8. Select ボタンをクリックします。Edit this endpoint ページが表示されます。
    9. Update ボタンをクリックして、 該当ログエンドポイントをバージョン2ログ形式にアップグレードします。
    10. Activate ボタンをクリックしてサービスをデプロイします。

    APIでアップグレードする

    Fastly API を使用してログエンドポイントをアップグレードするには、アップグレードが必要なサービスのアクティブなバージョンをクローンしたバージョンか、ロックされていない非アクティブバージョンに対して、次のコマンドを実行します:

    1
    
    curl -X PUT -H 'Fastly-Key: FASTLY_API_TOKEN' -H 'Content-Type: application/json' 'https://api.fastly.com/service/<your Fastly service ID>/version/<version number>/logging/<log type>/<log name>' --data-binary '{"format_version":"2"}'
    

    ここで log type はアップグレードするエンドポイントのタイプです:

    format_version フィールドはオブジェクトごとのフィールドであることに注意してください。ある1つのログオブジェクトで変更しても、他のオブジェクトには影響ありません。たとえば、Google Cloud Storage エンドポイントをアップグレードするには、エンドポイントの名前が「GCS Test」の場合、cURLコマンドは次のようになります。

    1
    
    curl -X PUT -H 'Fastly-Key: FASTLY_API_TOKEN' -H 'Content-Type: application/json' 'https://api.fastly.com/service/SU1Z0isxPaozGVKXdv0eY/version/1/logging/gcs/GCS%20Test' --data-binary '{"format_version":"2"}'
    

    ログバージョンの判別

    サービスが現在使用しているログバージョンを判別するには、次の cURL コマンドを実行します。

    1
    
    curl -X GET -H 'Fastly-Key: FASTLY_API_TOKEN'  'https://api.fastly.com/service/<your Fastly service ID>/version/<version number>/logging/<log type>/<log name>'
    

    log typeftp herokulogentries logglylogshuttle papertrails3 scalyrsumologic syslogです。cURL コマンドによって、該当バージョンの設定内容の詳細が JSON 形式で出力されます。例えば:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    
    {
        "address": "logs.papertrailapp.com",
        "created_at": "2016-04-01T15:37:30+00:00",
        "deleted_at": null,
        "format": "time.start.msec time.to_first_byte time.elapsed req.body_bytes_read req.bytes_read resp.http.content-length server.region client.ip %>s \"req.method req.url req.proto\" \"req.http.referer\" \"req.http.user-agent\"",
        "format_version": "2",
        "hostname": "logs.papertrailapp.com",
        "name": "fastly",
        "port": "11111",
        "public_key": null,
        "response_condition": "LOG /",
        "service_id": "1a2b3c4d5e6f7g8h9j0k",
        "updated_at": "2016-04-01T19:47:47+00:00",
        "version": "123"
    }
    

    format_version フィールドは、使用されているログ形式に応じて 1または 2のいずれかが表示されます。

    バージョン2ログ形式の利点

    バージョン2ログ形式を使用する主な利点は、次のとおりです。

    バージョン2のログをバージョン1のように表示する

    バージョン1のデフォルトのログ形式は次のとおりです。

    %h %l %u %t %r %>s

    バージョン2のほとんどのディレクティブとはまったく同じです - %t%r だけが異なっています。バージョン2のログ形式にアップグレードした後、新しい `%{…}V' を使ってバージョン1のログと同じ出力を実現することができます。それは次のようなログディレクティブになります。

    %h %l %u %{now}V %{req.method}V %{req.url}V %>s

    さらに、バージョン1で %b ディレクティブを使用している場合、代わりにこのディレクティブを使用することができます:

    %{resp.http.Content-Length}V

    Back to Top