Androidのログ出力にファイル名、行番号を付ける

こんにちわ。猫好きリーマンのほげPGです。
今回はAndroidでのログ出力について紹介します。
Androidでのログ出力は
- Log4j
- Logback
- Timber
など色々ありますが、
logcatに好みのフォーマット(アプリ単位のタグ、ファイル名:行番号)での出力ができるものがなかった(見つけることが出来なかった)。
ということで自分で作ることにしました。
構成は SLF4J –> Adaptor(※1) –> android.util.Log という感じ
※1 今回作成する部分
利用イメージはこんな感じになります。
作成クラスは org.slf4j:slf4j-android:jar:1.7.21をベースに3クラスほど。
AndroidLoggerFactory | ロガーのファクトリー。タグを加工しないように修正 |
AndroidLoggerAdapter | ロガークラス。Android.util.Logに出力のメッセージにファイル名、行番号を追加。 |
AndroidLoggerConfig | ロガー設定クラス。フォーマットやタグを設定する。 |
使用サンプルはこんな感じ
public class HogeApplication extends Application { private static final Logger logger = LoggerFactory.getLogger(HogeApplication.class); @Override public void onCreate() { super.onCreate(); AndroidLoggerConfig config = AndroidLoggerConfig.getInstance(); config.setTag("hoge"); config.setHead("(%F:%L) %m:"); config.setRootLevel(Log.DEBUG); config.setLevel("org.apache", Log.ERROR); config.setLevel("jp.co.ois.android.hogeroid", Log.VERBOSE); logger.info("version: {}, {}", BuildConfig.VERSION_CODE, BuildConfig.VERSION_NAME); } }
なんとなくLog4jぽくレベル設定もできるようにしました。
出力例)
11-16 17:39:40.180 3053-3053/jp.co.ois.android.hogeroid I/hoge: (HogeApplication.java:22) onCreate: version: 1, 1.0 11-16 17:39:40.202 3053-3053/jp.co.ois.android.hogeroid D/hoge: (MainActivity.java:16) onCreate: called. 11-16 17:39:40.217 3053-3053/jp.co.ois.android.hogeroid V/hoge: (MainActivity.java:18) onCreate: trace
これでソースコードへジャンプできます。
slf4j-android-log.jarとプロジェクトを以下に置きます。
http://www.ois-yokohama.co.jp/oisblog/file/slf4j-android-log-1.0.jar
http://www.ois-yokohama.co.jp/oisblog/file/MyApplication.zip
時間があったらGitHubへアップします…。
次回はAndroidアプリの起動処理を題材にScene Producer パターンのサンプルを作成します。
—
2016/11/21
githubへアップしました。
https://github.com/geobardi/slf4j-android
build.gradle の設定は以下になります。
repositories {
maven { url 'http://geobardi.github.io/maven/' }
}
dependencies {
compile 'jp.co.ois.android:slf4j-android:1.7.21'
}