本ドキュメントでは、Log Service ログを JSON 形式で OSS (Object Storage Service) に格納する方法について説明します。OSS へのログ転送の詳細については、OSS へのログ転送をご参照ください。
OSS ファイルの圧縮タイプとファイルアドレスは次のとおりです。
圧縮タイプ | ファイル拡張子 | OSS ファイルのアドレス例 |
---|---|---|
非圧縮 | なし | oss://oss-shipper-shenzhen/ecs_test/2016/01/26/20/54_1453812893059571256_937 |
圧縮 (snappy) | .snappy | oss://oss-shipper-shenzhen/ecs_test/2016/01/26/20/54_1453812893059571256_937.snappy |
オブジェクトは複数のログからなります。ファイルの各行は JSON 形式のログです。次の例をご参照ください。
{"__time__":1453809242,"__topic__":"","__source__":"10.170. ***.***","ip":"10.200. **.***","time":"26/Jan/2016:19:54:02 +0800","url":"POST
/PutData? Category=YunOsAccountOpLog&AccessKeyId=<yourAccessKeyId>&Date=Fri%2C%2028%20Jun%202013%2006%3A53%3A30%20GMT&Topic=raw&Signature=<yourSignature>
HTTP/1.1","status":"200","user-agent":"aliyun-sdk-java"}
圧縮 (Snappy)Snappy C ++ (Snappy.Compress メソッド) で非圧縮ファイルを圧縮します。 .snappy
ファイルを解凍すると、非圧縮ファイルを入手できます。
Snappy 公式 Web サイトより Lib をダウンロードし、Snappy.Uncompress メソッドを使用して .snappy ファイルを解凍します。
Java Lib で解凍xerial snappy-java の Snappy.Uncompress または Snappy.SnappyInputStream で解凍します (SnappyFramedInputStream には非対応)。
<dependency>
<groupId>org.xerial.snappy</groupId>
<artifactId>snappy-java</artifactId>
<version>1.0.4.1</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
Snappy.Uncompress
String fileName = "C:\\My download\\36_1474212963188600684_4451886.snappy";
RandomAccessFile randomFile = new RandomAccessFile(fileName, "r");
int fileLength = (int) randomFile.length();
randomFile.seek(0);
byte[] bytes = new byte[fileLength];
int byteread = randomFile.read(bytes);
System.out.println(fileLength);
System.out.println(byteread);
byte[] uncompressed = Snappy.uncompress(bytes);
String result = new String(uncompressed, "UTF-8");
System.out.println(result);
Snappy.SnappyInputStream
String fileName = "C:\\My download\\36_1474212963188600684_4451886.snappy";
SnappyInputStream sis = new SnappyInputStream(new FileInputStream(fileName));
byte[] buffer = new byte[4096];
int len = 0;
while ((len = sis.read(buffer)) ! = -1) {
System.out.println(new String(buffer, 0, len));
}
Linux 環境での解凍ツールLinux 環境には、.snappy ファイルの解凍ツールが用意されています。 こちらをクリックして snappy_tool をダウンロードします。
./snappy_tool 03_1453457006548078722_44148.snappy 03_1453457006548078722_44148
compressed.size: 2217186
snappy::Uncompress return: 1
uncompressed.size: 25223660