日本語のドキュメントには書かれていないど
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++;
}
}