読者です 読者をやめる 読者になる 読者になる

(androidで使えるかもしれない)java系ライブラリ検証メモ<logger/lombok編

メモ途中)

  • UIに絡まない感じでのJavaライブラリで使えそうなのをメモ

現場で使えるJavaライブラリ

現場で使えるJavaライブラリ

を参考に。

この仕組凄いですね!でも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
を見なおしてみると

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

-Xbootclasspath/a:lombok.jar
-javaagent:lombok.jar

検証)
で実際に使ってみた。
ぶっちゃけると

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

*1:自分も実はいや。LogCatでTAGでフィルタかけるとき面倒

*2:assets/logback.xmlで設定

*3:と思ったけど自動追加してくれるっぽい

*4:マシンパワーが余ってるなら別

*5:ADTのjavaコンパイラ側が動かなくなる