首页 > 其他分享 >Android Log.isLoggable 控制log打印

Android Log.isLoggable 控制log打印

时间:2024-05-27 11:12:54浏览次数:27  
标签:Log boolean isLoggable private TAG DEBUG Android

DEBUG方法比较
当我们在做APP开发时,需要设置调试开关打印Log,下面我列举出3种方法:

方法一:直接赋值
public static final boolean DEBUG = true;//false


方法二:设置BuildConfig.DEBUG的值
public static final boolean DEBUG = BuildConfig.DEBUG;


方法三:设置Log.isLoggable的值
public static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);


当然这里可能还有很多别的设置方法,由于个人局限就没有写了。下面我们来看看上面3种方法各自的特点:

方法一比较直观明了,可以清楚的知道是否允许打印Log。

方法二和编译模式绑定,如果是release版的就不会打印Log,如果是debug版的话就会打印Log。

方法三通过设置property属性来打印Log

从他们的特点来看我们知道,第一种和第二种方法我们至少需要编译两个版本的软件用于发布和调试。
第三种方法我们只需要编译一个版本既可以。在我们需要查看Log的时候,通过设置property即可查看Log。下面来详细介绍下Log.isLoggable的使用。


Log.isLoggable的使用姿势
步骤一:
MainActivity.java

public static final String TAG = "Main";
public static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);

public void onCreate(){
    if (DEBUG){
        Log.d(TAG, "onCreate");
    }
}

步骤二:
adb shell setprop log.tag.Main D

或者
修改/data/local.prop文件(该方法不一定有效,根据不同的系统,可能不会去读取local.prop文件)

log.tag.Main=D

注:这里的TAG要加上log.tag.做前缀

步骤三:
退出APP,重新进入,即可打印Log(注:这里之所以要退出APP是因为我们定义的DEBUG是全局的,所以需要重新赋值)。
当然你们也可以设置成局部变量,这样就不需要重新进入了,这样就可以免除第三步。

    //定义全局的Log开关
    private boolean VERBOSE = Log.isLoggable(TAG, Log.VERBOSE);
    private boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
    private boolean INFO = Log.isLoggable(TAG, Log.INFO);
    private boolean WARN = Log.isLoggable(TAG, Log.WARN);
    private boolean ERROR = Log.isLoggable(TAG, Log.ERROR);
    private boolean ASSERT = Log.isLoggable(TAG, Log.ASSERT);
    private boolean SUPPRESS = Log.isLoggable(TAG, -1);

frameworks中的模块使用Log.isLoggable

当APP使用Log.isLoggable并定义为全局变量时,我们可以setprop后重启app打印相关的Log。那frameworks中如果有Log.isLoggable要怎么打印呢?只需要执行下面3步即可:

adb shell setprop log.tag.<TAG> D
adb shell stop
adb shell start

adb shell stop会杀掉zygote进程以及所有由zygote孵化而来的子进程。adb shell start则会重启zygote进程,再由zygote进程启动其它Android核心进程。当zygote重新启动时,会重新加载framework相关资源,而此时属性已经设置。

 

refs:

https://blog.csdn.net/QQxiaoqiang1573/article/details/72867776

https://blog.csdn.net/QQxiaoqiang1573/article/details/72870825

标签:Log,boolean,isLoggable,private,TAG,DEBUG,Android
From: https://www.cnblogs.com/bluestorm/p/18215108

相关文章

  • logging 模块
    logging模块的核心点主要包括以下几个方面:基本配置、日志级别、日志记录器(Logger)、处理器(Handler)、格式器(Formatter)和过滤器(Filter)当然可以,系统学习logging模块的核心点主要包括以下几个方面:基本配置、日志级别、日志记录器(Logger)、处理器(Handler)、格式器(Formatter)和过滤器(Fil......
  • 翻译《The Old New Thing》- Hotkeys involving the Windows logo key are reserved b
    HotkeysinvolvingtheWindowslogokeyarereservedbythesystem-TheOldNewThing(microsoft.com)https://devblogs.microsoft.com/oldnewthing/20071130-00/?p=24333RaymondChen 2007年11月30日Windows徽标键的热键由系统保留        系统保留了......
  • Android交叉编译
    https://www.jianshu.com/p/b31acea79717https://www.jianshu.com/p/f77554b0caef概念编译环境和运行环境不同(在一个平台(pc)生成另一个平台(Androidios等)的可执行代码)使用到的工具CC编译器对C源文件进行编译处理,生成汇编文件(CCompiler)ls-l/usr/bin/cc AS将......
  • Android热修复简易实现
    https://www.jianshu.com/p/b65e5da3dff2 先了解一下原理和实现方式Java编译为classjavacxxx.java.class打包为jar包jarcvfxxx.jarx/x/x/class#可用.来代替目录意思为当前目录和所有的子目录打包将as编译好的jar包拆开unzipa.jar-doutfilejar-xvfa.jarj......
  • 无界(wujie)微前端子应用elementUI时,dialog中使用Select、TimePicker等组件,弹出框位置
    无界(wujie)微前端子应用elementUI时,dialog中使用Select、TimePicker等组件,弹出框位置可能会异常,如图:解决方法参考:public/index.html文件1、body中加style="position:relative"2、script中加if(window.__POWERED_BY_WUJIE__){Document.documentElement.classList.add(“i......
  • android体系结构的组成
    安卓系统架构主要分为四个层次,从高层到低层依次是:应用程序层:这一层包含了Android系统预装的核心应用程序,如电子邮件客户端、短信程序、日历、地图、浏览器、联系人管理程序等。这些应用程序通常使用Java语言编写。应用程序框架层:这一层为开发者提供了丰富的API......
  • android测试常用的adb命令以及进行Monkey测试
    1,什么是adb:ADB全称为AndroidDebugBridge,起到调试桥的作用,是一个客户端-服务器端程序。其中客户端是用来操作的电脑,服务端是Android设备。ADB也是AndroidSDK中的一个工具,可以直接操作管理Android模拟器或者真实的Android设备。2,为什么要用adb:运行设备的shell(命......
  • idea启动报错:java.lang.NoClassDefFoundError: org/mybatis/logging/LoggerFactory
    文章目录一、问题二、解决方法一、问题问题描述:idea整合Mybatis-plus的时候,启动报错:java.lang.NoClassDefFoundError:org/mybatis/logging/LoggerFactory二、解决方法可能原因:仔细检查了一下,发现mybatis-spring-boot-starter的包和mybatis-plus-boot-starter的......
  • Blog的图床搭建
    本图床搭建基于GitHub+PicGo+jsDelivr本文仅为个人操作方法文章中如有谬误,请多指教1.下载PicGo在PicGO官网下载PicGo2.在GitHub中获取tokens如果你的GitHub中没有repositories或者你想为你的图床创立一个新的repository,请先创建一个新repository并在里面上传图片......
  • Blog的图床搭建
    本图床搭建基于GitHub+PicGo+jsDelivr本文仅为个人操作方法文章中如有谬误,请多指教1.下载PicGo在PicGO官网下载PicGo2.在GitHub中获取tokens如果你的GitHub中没有repositories或者你想为你的图床创立一个新的repository,请先创建一个新repository并在里面上传图片在右侧......