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
Security measures
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