Scala で Android アプリ開発(Log 編)

ログを出力する際、ログ出力位置の情報も一緒に出力する。

package com.github.cooldaemon.HelloWorld

import _root_.android.util.{Log => ALog}

object Log {
  val TAG = "HelloWorld"
  
  def e(m: String) = printlog(ALog.e, m)
  def w(m: String) = printlog(ALog.w, m)
  def i(m: String) = printlog(ALog.i, m)
  def d(m: String) = printlog(ALog.d, m)
  def v(m: String) = printlog(ALog.v, m)
  
  private def printlog(f: (String, String) => Int, m: String): Int = {
    val st = ((new Throwable()).getStackTrace).apply(2)
    f(TAG, "%s.%s(%s:%s): %s".format(
      st.getClassName, st.getMethodName, st.getFileName, st.getLineNumber, m
    ))
  }
}

製品出荷時には、ログを出力しないよう注意。