概要

区切り文字ログは、各ログが改行で区切られています。1 行 1 ログになります。各ログのフィールドは、タブ、スペース、縦線 (|)、カンマ (,)、セミコロン (;)、といった定義されている区切り文字 (単一文字) で接続されます。フィールドのデータに区切り文字を使用する場合は、その文字を二重引用符 (") で囲みます。

一般的な区切り文字ログには、CSV ログ (コンマ区切り) および TSV ログ (タブ区切り) があります。

ログフォーマット

区切り文字ログは、区切り文字で各フィールドは分割されます。なお、単一文字および文字列の 2 つのモードがあります。

  • 単一文字モード

    単一文字モードでは、タブ、スペース、縦線 (|)、コンマ ()、セミコロン (;) といった定義された単一の文字により、ログの各フィールドは分割されます。

    二重引用符(") を区切り文字にすることはできません (単一区切り文字のエスケープ文字のため)。

    ログフィールドの値に区切り文字が含まれることはよくあります。ログフィールドを二重引用符"で括ることで、ログフィールドが不適切に分割されないようにします。また、フィールドの値に二重引用符"が含まれる場合には、""と記述してエスケープします。二重引用符("")をフィールドの括りに使用することも、フィールドの値に二重引用符を使用することもできます。それ以外の場合は、区切り文字ログモードではなく、シンプルモードまたは完全モードでフィールドが解析されるようにします。区切り文字ログのログフォーマット定義では対応できません。

    • フィールドを括るために二重引用符 (") を使用

      区切り文字を含むフィールドは、二重引用符 (") で括る必要があります。二重引用符は、区切り文字の隣に記述します。二重引用符と区切り文字の間には、スペース、タブ、およびその他の文字が含まれないようにします。

      区切り文字にコンマ (,)、フィールドを括るために二重引用符 (") を使用するとします。ログフォーマットが 1997,Ford,E350,"ac, abs, moon",3000.00である場合、ログは、1997FordE350ac, abs, moon、および3000.00の 5 つのフィールドに解析されます。二重引用符で囲まれたac, abs, moonは 1 つのフィールドとみなされます。

    • ログフィールドの値に二重引用符 ("") を使用

      フィールドを括るためにではなく、ログフィールドの値に二重引用符 ("") が含まれる場合は、二重引用符"""と記述してエスケープする必要があります。フィールドが構文解析される際、"""に復元されます。

      区切り文字にコンマ (,) を使用し、ログフィールドの値にコンマ (,) および二重引用符 ("") が含まれているとします。フィールドの値のコンマは二重引用符で囲みます。また、二重引用符 (") は""と記述してエスケープします。ログ1999,Chevy,"Venture ""Extended Edition, Very Large""","",5000.00は、1999ChevyVenture "Extended Edition, Very Large"、空白フィールド、および5000.00の 5 つのフィールドに解析されます。

  • 文字列モード

    文字列モードでは、||&&&^_^といった 2 〜 3 文字を区切り文字に指定します。文字列区切りのログが解析されます。各ログを二重引用符で括る必要はありません。

    ログフィールドの値に、区切り文字列が含まれないようにします。フィールドの値に区切り文字列が含まれる場合、ログの各フィールドは適切に分割されません。

    区切り文字列が&&のログ1997&&Ford&&E350&&ac&abs&moon&&3000.00は、1997FordE350ac&abs&moon、および3000.00の 5 つのフィールドに解析されます。

ログサンプル

  • 単一文字区切りのログ
    05/May/2016:13:30:28,10.10.10.1,"POST /PutData? Category=YunOsAccountOpLog&AccessKeyId=U0Ujpek**********&Date=Fri%2C%2028%20Jun%202013%2006%3A53%3A30%20GMT&Topic=raw&Signature=******************************* HTTP/1.1",200,18204,aliyun-sdk-java
    05/May/2016:13:31:23,10.10.10.2,"POST /PutData? Category=YunOsAccountOpLog&AccessKeyId=U0Ujpek**********&Date=Fri%2C%2028%20Jun%202013%2006%3A53%3A30%20GMT&Topic=raw&Signature=******************************* HTTP/1.1",401,23472,aliyun-sdk-java
  • 文字列区切りのログ
    05/May/2016:13:30:28&&10.200.98.220&&POST /PutData? Category=YunOsAccountOpLog&AccessKeyId=U0Ujpek**********&Date=Fri%2C%2028%20Jun%202013%2006%3A53%3A30%20GMT&Topic=raw&Signature=******************************* HTTP/1.1&&200&&18204&&aliyun-sdk-java
    05/May/2016:13:31:23&&10.200.98.221&&POST /PutData? Category=YunOsAccountOpLog&AccessKeyId=U0Ujpek**********&Date=Fri%2C%2028%20Jun%202013%2006%3A53%3A30%20GMT&Topic=raw&Signature=******************************* HTTP/1.1&&401&&23472&&aliyun-sdk-java

区切り文字ログを収集するように Logtail を設定

Logtail を使用して区切り文字ログを収集する手順については、「Python ログ」をご参照ください。ネットワーク構成およびネットワーク設定に合わせて構成を選択します。

  1. Logstoreリストページで、データインポートウィザードのアイコンをクリックします。
  2. データソースを選択します。

    テキストファイルを選択し、次へをクリックします。

  3. データソースを設定します。
    1. 構成名およびログパスを入力します。また、ログ収集モードには区切り文字モードを選択します。
    2. ログサンプルを入力し、区切り文字を選択します。

      ログフォーマットと同じ区切り文字を選択します。ログフォーマットと異なる区切り文字が選択された場合、ログの解析に失敗します。

      図 1. データソースを選択
    3. ログ抽出フィールドにキーを割り当てます。

      ログサンプルを入力し、区切り文字を選択したら、選択した区切り文字に基づいてログの各フィールドが抽出されます。抽出された各フィールドは値です。値のキーを指定します。

      上記のログサンプルでは、区切り文字に​​コンマ (,) が用いられ、6 つのフィールドがログに記録されています。各フィールドのキーをそれぞれ time、ip、url、status、latency、user-agent に指定します。

    4. ログ時間を指定します。

      ログ時間には、システム時間またはログのフィールド (例: time フィールド 「05/May/2016:13:30:29」) のいずれかを指定します。時間の書式を設定する方法については、テキストログー時間書式を設定をご参照ください。

      図 2. ログ時間の指定
    5. コンソールにログをプレビュー表示し、ログが正常に収集されているかどうかを確認します。
      図 3. ログのプレビュー