ログについて


Google App Engineには、アクセスログとアプリケーションログの2つがあります。
(正確には他にもAdminログとかあるけど省きます)

すべてのWebへのアクセスは静的ファイルを含めてアクセスログが残ります。
Webアプリケーションからロギングすると、アプリケーションログが追加されます。

そしてログというと大きく分けて3つの話題になります。
一つ目は、Webアプリケーション(GAE)からロギングすること。二つ目はWebアプリケーションのアクセス ログを管理ツールで閲覧・ダウンロードすること。三つ目はLogService APIを使ってWebアプリケーション(GAE)でログ取得すること

  1. アクセスログでは残らない、Webアプリケーションの状態を記録するためWebアプリケーションからロギングします。
  2. アクセスログをダウンロードすることで、標準のWebアクセスログツールで分析したり、特別なアプリで解析することができます。
  3. LogService APIを使うことで管理ツールとは別の方法でリアルタイムにログの状態を表示することもできますし、ログから別のコンテンツを作成することもできる。
まず初めにログの制限について説明したいと思います。

アクセスログも他のサービスと同様に無料枠での制限がある

以下のようになっています。無料枠はまれに変更されますので、原文も見てくてください。
無料だと、最大90日しか保存されません。
無制限にすると、数年で数十ギガに膨れ上がるし、それを無制限にAPIでアクセスできるようにすると、費用がかかるので、無料枠は制限せざるを得ません。

ログの保存期間や容量は変更することもできます。管理ツールから変更できます。

ログを管理ツールで閲覧・ダウンロードする

アクセス ログ・アプリケーションログを管理ツールで閲覧・ダウンロードすることで、

管理ツールでのログの閲覧

公式ドキュメントは情報少ないのですが、すでに多くの検索結果や書籍などで紹介されてますので省きます

ログのダウンロード


公式ドキュメントにあるようappcfgを使ってダウンロードします

WindowsでEclipseお使いですと、appcfg.cmdは以下の様な場所になります。もちろんEclipseのインストールした場所やApp Engine SDKのバージョンによって異なります
C:\eclipse\plugins\com.google.appengine.eclipse.sdkbundle_1.7.0\appengine-java-sdk-1.7.0\bin

コマンドプロンプトの操作に不慣れな場合、苦労すると思いますが、CD コマンドで、以下フォルダーに移動した場合
C:\eclipse\plugins\com.google.appengine.eclipse.sdkbundle_1.7.0\appengine-java-sdk-1.7.0\bin

>appcfg.cmd request_logs C:\Users\Yourname\workspace\YourProject\war mylogs.txt

request_logsのあとに、Projectの場所、ファイルの保存先のようになると思います
。App Engineのアプリ名やバージョンは、war内のappengine-web.xmlから読み込まれます。

そして、ユーザー名・パスワードを入力すると、ダウンロード mylogs.txtが、C:\eclipse\plugins\com.google.appengine.eclipse.sdkbundle_1.7.0\appengine-java-sdk-1.7.0\bin の中に作られます。

このオプション無しですと、普通のApache形式のアクセスログとして出てきます。
111.0.0.164 - - [15/Jul/2012:08:47:28 -0700] "GET /index.html HTTP/1.1" 304 0 "http://www.google.com/" -

ログダウンロードのオプション

公式ドキュメントだとこうなっています。

--num_days=
すべてのログが欲しい場合は、0を指定します。(サイズ大きいと無料枠にひっかかるかも?)

--severity=
アプリケーションのログも欲しい時に付けます。
デフォルトの意味が理解できていません。これ付けないと、普通のアクセスログが返ってきて、付けると、アプリケーションログが付いてるログが返ってきます。
デフォルトも何も、ログレベルを指定する数字は省けません。

--append
ファイルを追記で保存します。ただし、num_daysのデフォルト値が変わるので注意

ログのダウンロードについての雑感

仮に、90日で容量オーバーしないと仮定すれば、
最低でも、90日ごとに、--num_days=0で、全取得すればログは手元に残せるでしょう。できれば、--severity無しと、--severity=1 の両方あればいい。
普通のログ解析は、Google Analyticsなどのサービス利用すればいいわけで、必要ないかもしれないが、比較するときに便利




Comments