年末に75パーセントOFFセールってのがやってたので、IntelliJを購入したのですが、 年末年始はゴロゴロしてて、結局何もいじりませんでした。笑 とりあえず年明けってことで、リハビリも兼ねてコード書きながら、使ってみたいと思います。 Mavenなプロジェクトもサクっと作れますし、 pom.xmlとか見やすいですね。 Show Diagramとか、おぉって思いますし、 クラスのアウトラインをイイ感じに表示してくれて、 Download Sourcesってリンク押せばソース落としてきてくれるし。 ショートカットがEclipseでF3だったのが、Ctrl+Bとかだったり、 ちょっと違いはあったりしますが、まぁおいおい慣れるでしょう。 んで、さっそく、ちょっとしたコード書いてみます。 td-logger-java(https://github.com/treasure-data/td-logger-java)という ライブラリを使って 昨年試して放ったらかしてるTreasureData にデータを入れてみます。 ↓APIのキーを取得して
C:>td apikey APIを叩くKEYが表示される
↓のようなコード書いてみました。
// プロキシ用。ソース追ってくとHttpURLConnectionで~って感じだったので。 System.setProperty("http.proxySet", "true"); System.setProperty("http.proxyHost","hoge-proxy.shinodogg.com"); System.setProperty("http.proxyPort","9999"); // Treasure Dataにデータをストアする用 System.setProperty(Config.TD_LOGGER_AGENTMODE, "false"); System.setProperty(Config.TD_LOGGER_API_KEY, APIのキー); // トレジャーデータのロガーのインスタンス作ってグルグル回してログはいてみる TreasureDataLogger logger = TreasureDataLogger.getLogger("my_database"); Map data = new HashMap(); for (int i = 0; i < 10000; i++) { data.put("i", i); data.put("user", "user" + i); data.put("hage", "hage" + i); logger.log("hoge", data); } // キューイングして~って形になってるので処理が終わったら閉じる logger.close();
ってかIntelliJの Local History は半端ねぇっすなー…。 実装の話にちょっと戻ると、HttpSenderを使ったロギングは、 HttpSenderThreadって別スレッドなアレでキューに溜め込んで一定間隔でオリャってして送ってる感じ。 なので README.md にも書いてありますが、例えばWebアプリケーションを入れ替えて 再起動する時とか溜まってる分をフラッシュして吐き出してやらないとみたいです。 JavaVMって終了する時になんか拾えたりすんのかな?って思ったら、 シャットダウンフックってのがあるみたいだけど↓ Design of the Shutdown Hooks API ↓とか読んでるとそれに頼った実装もどうなの?って感じなのかな~。 #9 Backyard: Behavior of Java ShutdownHook for POSIX Signals or Stop Operations そんなこと考えながらググってたら、 ↓こういう地に足ついた感じのエントリーとかナイスだなぁと思いました。 fluent-agent-lite と td-agent で、小さくはじめる fluentd - studio3104::Blog んま、そんなこんなで、上記のクラスをとりあえず2回ほど叩いてみると、 ↓データ入ってるっぽいです。
C:>td table:list my_database +-------------+-------+------+-------+--------+ | Database | Table | Type | Count | Schema | +-------------+-------+------+-------+--------+ | my_database | hoge | log | 20000 | | +-------------+-------+------+-------+--------+ 1 row in set
クエリ投げてみると↓のようにjob:showみてねんって事なので、
C:>td query -d my_database "select * from hoge" Job 1484626 is queued. Use 'td job:show 1484626' to show the status.
↓叩いたらブワって出てきてエラいこっちゃー。笑
C:>td job:show 1484626 Organization : JobID : 1484626 Status : success Type : hive Priority : NORMAL Result : Database : my_database Query : select * from hoge Result : +----------------------------------------------------------------------+------------+ | v | time | +----------------------------------------------------------------------+------------+ | {"time":"1357883838","i":"0","user":"user0","hage":"hage0"} | 1357883838 | | {"time":"1357883838","i":"1","user":"user1","hage":"hage1"} | 1357883838 | | {"time":"1357883838","i":"2","user":"user2","hage":"hage2"} | 1357883838 | | {"time":"1357883838","i":"3","user":"user3","hage":"hage3"} | 1357883838 | | {"time":"1357883838","i":"4","user":"user4","hage":"hage4"} | 1357883838 | | {"time":"1357883838","i":"5","user":"user5","hage":"hage5"} | 1357883838 | | {"time":"1357883838","i":"6","user":"user6","hage":"hage6"} | 1357883838 | | {"time":"1357883838","i":"7","user":"user7","hage":"hage7"} | 1357883838 | | {"time":"1357883838","i":"8","user":"user8","hage":"hage8"} | 1357883838 | | {"time":"1357883838","i":"9","user":"user9","hage":"hage9"} | 1357883838 | | {"time":"1357883838","i":"10","user":"user10","hage":"hage10"} | 1357883838 | ~略~
ピアソンエデュケーション
売り上げランキング: 6,279