(androidで使えるかもしれない)java系ライブラリ検証メモ<logger/lombok編
メモ途中)
- UIに絡まない感じでのJavaライブラリで使えそうなのをメモ
- 作者: 竹添直樹,島本多可子,小津美夕紀,亀井隆司
- 出版社/メーカー: 翔泳社
- 発売日: 2011/07/16
- メディア: 大型本
- 購入: 6人 クリック: 217回
- この商品を含むブログ (25件) を見る
- slf4j(for android)
あれ? #twitter4j ってslf4j(for android)入れてるだけで、自動的にそっちの形でログ出力するのか。どういう仕組みになってるんだろう??
.@kimukou2628 Class.forNameでクラス明日にSLF4Jがあることを検出したらそちらを使う仕組みになってます URL
この仕組凄いですね!でもClass.for.Nameで動くなら
proguardでslf4jも除外対象にした方がいいんだろうなーとか思ったりも
でリリースしてるようなんですがMarkerはまだ使えないっぽい
情報としては保持してるそうなので、自前で除外処理を書くしかないのかな?
あと、あのslf4jのほにゃららのタグが嫌な人はやはりいるようで*1
なのも有ったりする。
からDL出来るよう。動的にTAG指定できるならこちらも有りかなとか
思ってたりもしてるが、この用例だと初期TAGの設定をプロパティで設定する のみの拡張
参考)
android版には
なlogback拡張もあり、
- 日本java界の若き貴公子 ゆとり提督 (@megascus) さんに
質問して回答を教えてもらえず無視されてた、AsyncAppender/JDBCAppender/SocketApender 等も使うことは可能 *2
でもライセンスが微妙なのと、サイズが大きめだな。。。
Limitations The Android binding implementation currently does not support…
のお話が端的に状況を表してるかも。
でこの話を踏まえてjavadoc
を見なおしてみると
- LoggerFactory (SLF4J 1.7.21 API) には
- getLogger(String name) という関数があるので
Logger logger = LoggerFactory.getLogger(this.getClass());
=>
Logger logger = LoggerFactory.getLogger(tag);
と置き直せばいいわけだ。
ただ
みてて思ったけど error関数周りの引数が微妙。
Object型だと Exception + 可変引数 な話ができないんだよな‥‥‥(汗
で 何とかならんもんかなと思い。実際の実装コードを見てみると
- org.slf4j.impl.AndroidLogger:: format
private static String format(final String format, final Object[] args) { return MessageFormatter.arrayFormat(format, args).getMessage(); }
なフォーマット変換記述があるので、そこをもらってくる
ただ痛いのが
public static void error(String tag,Object msg,Exception ex) ◎) public static void error(String tag,Exception ex,String format,Object... arguments) X)public static void error(String tag,String format,Object... arguments,Exception ex)
と書き方揃えられないところかな。。。(汗
以前の
書きなおしたの
proguard-project.txt には
-keep class org.slf4j.** { *; }
-keepattributes *Annotation*
を忘れずに追加すること
- lombok
@kimukou2628 そういえば、こんなのもありましたね。試したこと無いのでちょっと見てみます。
2013-08-21 12:23:07 via web to @kimukou2628
@kerukerupappa 調べたら lambok androidのサポートもしているようです URLでも日本の記事だと URL URL らへんぐらい?
- Project Lombok
- eclipse.iniに下記の記述追加は必要?*3
-Xbootclasspath/a:lombok.jar -javaagent:lombok.jar
- Java特有の冗長なコードを簡潔に記述する「Lombok」 (1/5):CodeZine(コードジン)
- http://blog.water-cell.jp/2013/08/04_jpp-lombok/
検証)
で実際に使ってみた。
ぶっちゃけると
java -jar lombok.jar publicApi
で生成された lombok-api.jar をlibsに入れるだけで問題ない感じ
上記リンクのJPPの
@AllArgsConstructor
は @JsonModel(decamelize = true) を指定してるため
どうもエラーになるようなんで外したけどそれ以外はOK。
setter/getterなくていいのは凄く幸せだな。。。
速度も1−2割ぐらい速くなった気がするんだけど
魔法な仕組みがあるのかな?
備考)
ちなみに lombokのインストーラで入れてしまうとADT以上に
結構ソーススキャニングしてしまうみたいで結構キツイみたいなので
やらん方がいい*4
ふつうに lombok-api.jar 入れてれば補完効くので問題ない
検証<訂正)
別環境で構築したらAPT変換が実際動いてなかった。。agent指定は必須みたい。
しかもeclipse4系では動かないという<汗*5。
lombok-0.12.2 factory/jsonpullparser-apt-1.6.2.jar のAPT指定みたいなものでいけないのかな?ってググると自分のブログが引っかかってくるのがイヤだな(汗。しかも未解決状態で。。