Log.isLogggbaleを知っていますか?

3131 ワード

もっと読む
私たちはLog.isLoggggableを通じて動的にロゴの出力を切り替えることができます。
http://androidxref.com/8.1.0_r 33/xref/frame eworks/core/java/android/util/Log.java
android.util.LogにおけるisLogggable方法解析:
    /**
     * Checks to see whether or not a logs for the specified
    *
     *  The default level of any(is set to INFO.This means that any level above and including)
     *  INFO will be logged.Before you make any calsto a logging methodyou shuld check to see
     *  if your(shoud be logged.You can change the default level by setting a system property:
     *      'set prop logs.LOG_TAG>'
     *  Where level is eigther VERRBOSE,DEBUG,INFO,WARN,ERROR,ASSERT,or SUPPRESS.SUPPRESS will
     *  turn off all logging for your.You can also create a local.prop file that with the
     *  フォローwing in it:
     *      'ロゴLOG_TAG>='
     *  and place that in/data/local.prop.
     *
     * @param.
     * @param level The level to check.
     * @return Whether or not that is allowed to be logged.
     * @throws IllagalAgment Exception is thrown if the tag.length()>23
     *         for Nougat(7.0)releases(API<=23)and pror、there is no
     *         limit of concern after this API level.
     */
public static native book isLoggable;
そのデフォルトのレベルはINFOです。INFO以上のレベルしか出力できません。そのレベルを変更したいなら、adb shell setprop TAG LEVELという方法で調整したり、local.propを修正して設定したりできます。
その応用は参考になる
http://androidxref.com/8.1.0_r 33/xref/packages/apps/DeskClock/src/com/android/deskclock/LogUtils.java
63        /**
         * Log everything for debug builds or if running on a dev device.
         */
        public final static boolean DEBUG = BuildConfig.DEBUG
                || "eng".equals(Build.TYPE)
                || "userdebug".equals(Build.TYPE);

        public final String logTag;

        public Logger(String logTag) {
            this.logTag = logTag;
        }

        public boolean isVerboseLoggable() { return DEBUG || Log.isLoggable(logTag, Log.VERBOSE); }
        public boolean isDebugLoggable() { return DEBUG || Log.isLoggable(logTag, Log.DEBUG); }
        public boolean isInfoLoggable() { return DEBUG || Log.isLoggable(logTag, Log.INFO); }
        public boolean isWarnLoggable() { return DEBUG || Log.isLoggable(logTag, Log.WARN); }
        public boolean isErrorLoggable() { return DEBUG || Log.isLoggable(logTag, Log.ERROR); }
        public boolean isWtfLoggable() { return DEBUG || Log.isLoggable(logTag, Log.ASSERT); }
たとえば:
public static final String TAG = "Test";
public static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);

public void onCreate(){
    if (DEBUG){
        Log.d(TAG, "onCreate");
    }
}
adb shell set prop logs.tag.Test D
アプリであれば、APPを終了して、再度ログインすれば、Logをプリントできます。Frame ebookであれば、adb shell stop adb shell startを実行する必要があります。