Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?

関連記事

Jsdo.itの関連作品

日本時間で扱う

importClass(java.util.TimeZone);

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

データストア

importPackage(Packages.com.google.appengine.api.datastore);
var ds = DatastoreServiceFactory.getDatastoreService();
var query = new Query("msg");
query.addFilter("uname",
    Query.FilterOperator.NOT_EQUAL,
    req.headers['user-agent']);
query.addSort("uname", Query.SortDirection.DESCENDING);
var imas = ds.prepare(query).asList(
    FetchOptions.Builder.withOffset(0));

msg = imas.size();
var itEnt = imas.iterator();

while(itEnt.hasNext()) {
    var ent = itEnt.next();
    var name = ent.getProperty("uname");
    var date = ent.getProperty("uemail");
    msg = msg + "\n" + "[" + date + "]" + name;
}

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

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++;
   }
}

参考リンク

関連Gist

Link

アクセス解析タグ

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment