概要
区切り文字ログは、各ログが改行で区切られています。1 行 1 ログになります。各ログのフィールドは、タブ、スペース、縦線 (|)、カンマ (,)、セミコロン (;)、といった定義されている区切り文字 (単一文字) で接続されます。フィールドのデータに区切り文字を使用する場合は、その文字を二重引用符 (") で囲みます。
一般的な区切り文字ログには、CSV ログ (コンマ区切り) および TSV ログ (タブ区切り) があります。
ログフォーマット
区切り文字ログは、区切り文字で各フィールドは分割されます。なお、単一文字および文字列の 2 つのモードがあります。
- 単一文字モード
単一文字モードでは、タブ、スペース、縦線 (
|
)、コンマ (、
)、セミコロン (;
) といった定義された単一の文字により、ログの各フィールドは分割されます。注 二重引用符("
) を区切り文字にすることはできません (単一区切り文字のエスケープ文字のため)。ログフィールドの値に区切り文字が含まれることはよくあります。ログフィールドを二重引用符
"
で括ることで、ログフィールドが不適切に分割されないようにします。また、フィールドの値に二重引用符"
が含まれる場合には、""
と記述してエスケープします。二重引用符(""
)をフィールドの括りに使用することも、フィールドの値に二重引用符を使用することもできます。それ以外の場合は、区切り文字ログモードではなく、シンプルモードまたは完全モードでフィールドが解析されるようにします。区切り文字ログのログフォーマット定義では対応できません。- フィールドを括るために二重引用符 (") を使用
区切り文字を含むフィールドは、二重引用符 (
"
) で括る必要があります。二重引用符は、区切り文字の隣に記述します。二重引用符と区切り文字の間には、スペース、タブ、およびその他の文字が含まれないようにします。区切り文字にコンマ (
,
)、フィールドを括るために二重引用符 ("
) を使用するとします。ログフォーマットが1997,Ford,E350,"ac, abs, moon",3000.00
である場合、ログは、1997
、Ford
、E350
、ac, abs, moon
、および3000.00
の 5 つのフィールドに解析されます。二重引用符で囲まれたac, abs, moon
は 1 つのフィールドとみなされます。 - ログフィールドの値に二重引用符 ("") を使用
フィールドを括るためにではなく、ログフィールドの値に二重引用符 ("") が含まれる場合は、二重引用符
"
を""
と記述してエスケープする必要があります。フィールドが構文解析される際、""
は"
に復元されます。区切り文字にコンマ (
,
) を使用し、ログフィールドの値にコンマ (,) および二重引用符 ("") が含まれているとします。フィールドの値のコンマは二重引用符で囲みます。また、二重引用符 (") は""
と記述してエスケープします。ログ1999,Chevy,"Venture ""Extended Edition, Very Large""","",5000.00
は、1999
、Chevy
、Venture "Extended Edition, Very Large"
、空白フィールド、および5000.00
の 5 つのフィールドに解析されます。
- フィールドを括るために二重引用符 (") を使用
- 文字列モード
文字列モードでは、
||
、&&&
、^_^
といった 2 〜 3 文字を区切り文字に指定します。文字列区切りのログが解析されます。各ログを二重引用符で括る必要はありません。注 ログフィールドの値に、区切り文字列が含まれないようにします。フィールドの値に区切り文字列が含まれる場合、ログの各フィールドは適切に分割されません。区切り文字列が
&&
のログ1997&&Ford&&E350&&ac&abs&moon&&3000.00
は、1997
、Ford
、E350
、ac&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 ログ」をご参照ください。ネットワーク構成およびネットワーク設定に合わせて構成を選択します。
- Logstoreリストページで、データインポートウィザードのアイコンをクリックします。
- データソースを選択します。
テキストファイルを選択し、次へをクリックします。
- データソースを設定します。
- 構成名およびログパスを入力します。また、ログ収集モードには区切り文字モードを選択します。
- ログサンプルを入力し、区切り文字を選択します。
ログフォーマットと同じ区切り文字を選択します。ログフォーマットと異なる区切り文字が選択された場合、ログの解析に失敗します。
図 1. データソースを選択 - ログ抽出フィールドにキーを割り当てます。
ログサンプルを入力し、区切り文字を選択したら、選択した区切り文字に基づいてログの各フィールドが抽出されます。抽出された各フィールドは値です。値のキーを指定します。
上記のログサンプルでは、区切り文字にコンマ (
,
) が用いられ、6 つのフィールドがログに記録されています。各フィールドのキーをそれぞれ time、ip、url、status、latency、user-agent に指定します。 - ログ時間を指定します。
ログ時間には、システム時間またはログのフィールド (例: time フィールド 「05/May/2016:13:30:29」) のいずれかを指定します。時間の書式を設定する方法については、テキストログー時間書式を設定をご参照ください。
図 2. ログ時間の指定 - コンソールにログをプレビュー表示し、ログが正常に収集されているかどうかを確認します。
図 3. ログのプレビュー