LoginSignup
6
6

More than 5 years have passed since last update.

Google App Engineのアクセスログにプログラムからアクセスする

Posted at

日本語のドキュメントには書かれていないど

Google App Engineではログへアクセス出来るAPIが用意されている。
RingoJSでのサンプル的なソースを書いてみた。

ソース

importPackage(Packages.com.google.appengine.api.log);
importClass(java.util.Calendar);
importClass(java.util.TimeZone);

// 黙ってるとGoogle App EngineではタイムゾーンがUTCなので、
// 明示的に日本時間を指定する。
TimeZone.setDefault(TimeZone.getTimeZone("JST")); 

var query = LogQuery.Builder.withDefaults();
query.includeAppLogs(true);

var records = LogServiceFactory.getLogService().fetch(query);  

// 結果をmsgに文字列として格納する。
var msg = "";

// RingoJSでのイテレータの扱いに実は難儀したw
var it = records.iterator();

// 何件取得したかのカウンタ(取得件数制限するために利用)
var limit = 0;

// アクセス状況が気になるパスを指定する。
var targetPath = "/ykoV";

while(it.hasNext()&&limit<15) {   
   // イテレータを進める
   var record = it.next();

   if(record.getResource().lastIndexOf(targetPath,0)==0) {
      var cal = Calendar.getInstance();
      cal.setTimeInMillis(record.getStartTimeUsec() / 1000);

      // アクセスのあった時刻を取得する。
      msg = msg + java.lang.String.format("<br />Date: %s", cal.getTime().toString()) + "<br>";

      // アクセス元のIPアドレスを取得する。
      msg = msg + "IP: " + record.getIp()+"<br />";

      //msg = msg + "Method: " + record.getMethod()+"<br />";

      // アクセスされたURLを取得する。
      msg = msg + "Resource " + record.getResource()+"<br />";
      limit++;
   }
}

参考リンク

関連記事

関連作品

6
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
6