Hugoでログの出力をしてみる


Androidでデバッグするときには、Logクラスを用いてログを出力することが一般的です。
以前は私もログの出力をLogクラスに頼っていたのですが、最近はちょっと使い勝手が悪く感じる様になってきたので、Hugoというライブラリを使うようになっています。
仕事で知ってからではありますが、これはいいなと思うので紹介します。

HugoというライブラリはJakeWharton先生作なので、かなり安心して利用できるかと思います。

ちなみに、今回もサンプルアプリをGitHubに公開してありますので、そちらも参考にして見てください。

Hugoライブラリの設定方法

まずはライブラリをプロジェクトに読み込みます。
以下のようにbuild.gradleに記述して、ライブラリに組み込みます。

buildscript {
    repositories {
        jcenter()
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.2.3'
        classpath 'com.jakewharton.hugo:hugo-plugin:1.2.1'
    }
}

後、app/build.gradleにapplyの指定を追加します。

apply plugin: 'com.jakewharton.hugo'

これでHugoが利用できるようになりました。

Hugoを利用する

Hugoは利用したいメソッドにアノテーションを付けるだけです。

@DebugLog
public String toast(String args1, String args2) {
    Toast.makeText(this, "サンプルメッセージ", Toast.LENGTH_SHORT).show();
    return args1 + args2;
}

@DebugLogとつけるだけで、上記の例ではtoastメソッドの引数と戻り値、更にメソッドの処理にかかった実行時間も以下のように取得できるので、アプリの動作が重いときのパフォーマンス改善などに役立つ情報が手軽に手に入ります。

01-26 23:43:22.530 16794-16794/net.buildbox.sample.sample_hugo V/MainActivity: ⇢ toast(args1="Hello, ", args2="World!")
01-26 23:43:22.540 16794-16794/net.buildbox.sample.sample_hugo V/MainActivity: ⇠ toast [10ms] = "Hello, World!"

それでもLogクラスは有用

このライブラリを知る前だったら、各メソッドの開始直後にLog.dメソッドを使ってログを出力するコードなどをよく書いていましたが、それも不要になります。
これでLogクラスの利用はかなり減りますが、完全になくなるわけではありません。
Hugoライブラリではメソッド内の処理実行途中の状態を知りたい場合には対応していないので、状況に応じた使い分けが必要になります。
ここはアプリによってくるところですので、手持ちのアプリで状況に合わせて使い分けてください。

シンプルなHugo、上記のサンプルコードが参考になれば幸いです。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です