第一行代码总结:13.3定制自己的日志工具

13.3定制自己的日志工具

【总结:测试时,自己调用已经定义好的打印出不同级别的日志方法LogUtil.v(),LogUtil.d(),

LogUtil.i(),LogUtil.w(),LogUtil.e().这些方法分别是能够打印出其及其之下级别的日志。

此时,如果我们更改LEVEL的值,相应的打印日志的方法有的就会执行,有的就不会执行。若我们将LEVEL定为VERBOSE,则所有的打印日志的方法都会得到执行。若将LEVEL定为WARN,则只有LogUtil.w()和LogUtil.e()两个打印日志的方法会得到执行。因为它们的级别在WARN及其之上。】

android自带的日志工具的缺点:在打印日志的控制方面做得不够好。

比如:你正在编写一个比较庞大的项目,期间为了方便调试,在代码的很多地方都打印了大量的日志。最近项目已经基本完成了,但是却有一个非常让人头疼的问题,之前用于调试的那些日志,在项目正式上线之后仍然会照常打印,这样不仅会降低程序的运行效率,还有可能将一些机密性的数据泄露出去。

怎么办呢?

难道要一行一行把所有打印日志的代码都删掉?显然这不是什么好方法,不仅费时费力,而且以后你继续维护这个项目的时候可能还需要这些日志。

最好的办法:就是能够自由地控制日志的打印,当程序处于开发阶段就让日志打印出来,当程序上线之后就把日志屏蔽掉。

步骤:

1、新建一个LogUtil类,在该类中:

    (1)定义六个整型常量VERBOSE,DEBUG,INFO,WARN,ERROR,NOTHING,并且它们对应的值都是递增的。

    (2)定义一个LEVEL常量,可以将它的值指定为上面六个常量中的任意一个。我们只需要修改LEVEL常量的值,就可以自由地控制日志的打印行为。

比如,你将LEVEL指定成VERBOSE,那么在任何时候你调用任何方法都能打印出你想要的日志。

比如,你将LEVEL指定成WARN,那么当你调用WARN级别以下的方法时如v(),d(),i()方法,都不能打印出自己想要的结果。当你调用WARN级别及以上的方法时,就能打印出自己想要的结果。

比如,你将LEVEL指定成NOTHING,就可以把所有日志都屏蔽掉。

    (3)接下来,定义五个方法v(),d(),i(),w(),e():

A、在这写方法中都分别提供一个静态的打印方法Log.v(),Log.d(),Log.i(),Log.w(),Log.e(),其接收的参数都是String tag,和String msg.这样,在测试的时候,直接用类名调方法即可。

B、在各方法执行之前,都加了一个if判断语句,只有当LEVEL常量的值小于或等于对应日志级别值的时候,才会将日志打印出来。

                  比如:打印一行DEBUG级别的日志:Log.d(“TAG”,”debuglog”);

  代码示例:

public classLogUtil{

  public static final int VERBOSE = 1;

  publicstatic final int DEBUG = 2;

  public static final int INFO = 3;

  public static final int WARN = 4;

  public static final int ERROR = 5;

  public static final int NOTHING = 6;

  public static final int LEVEL = VERBOSE;//这里将级别指定为VERBOSE,表示所有VERBOSE级别之上的日志都会被打印出来。若指定为WARN,表示所有WARN级别及其以上的日志都会被打印。若指定为NOTHING,根据后面的方法,将不会打印日志。

 

 public static void v(String tag, String msg){

  if(LEVEL<= VERBOSE){

    Log.v(tag,msg);

  }

}

 

publicstatic void d(String tag, String msg){

  if(LEVEL<= DEBUG){

    Log.v(tag,msg);

  }

}

publicstatic void i(String tag, String msg){

  if(LEVEL<= INFO){

    Log.v(tag,msg);

  }

}

publicstatic void w(String tag, String msg){

  if(LEVEL<= WARN){

    Log.v(tag,msg);

  }

}

publicstatic void e(String tag, String msg){

  if(LEVEL<= ERROR){

    Log.v(tag,msg);

  }

 }

}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
引用:时间限制: 1000 ms 内存限制: 65536 KB 提交数: 32908 通过数: 19042 【题目描述】 输出一个整数序列中最大的数和最小的数的差。 引用[2]:【输入样例】 5 2 5 7 4 2 【输出样例】 5 //信息学奥赛一本通1112:最大值和最小值的差 视频题解 #include<bits/stdc .h> using namespace std; //微信14808098 一起快乐学习信息学奥赛 //更多视频题解点击 blog.csdn.net/weixin_42790071 //更多视频题解 百度搜索:清远尚贤博客 int a[10005]; int max_=-20000; int min_=20000; int n; int main() { cin>>n; for(int i=1;i<=n;i ){ scanf("%d",&a[i]); if(a[i]>max_){ max_ = a[i]; } if(a[i]<min_){ min_ = a[i]; } } printf("%d",max_-min_); return 0; }。 引用:书名:《Java Web开发实战1200例(第II卷)》(清华大学出版社.卢瀚.王春斌) PDF格式扫描版,全书分为7篇23章,共960页。2011年6月出版。 注:原书只有前20章818页,本人添加了剩余章节重新编辑成完整版本,为了方便... 根据题目描述,需要输出一个整数序列中最大的数和最小的数的差。根据给定的输入样例,我们有一个整数序列为[2, 5, 7, 4, 2]。我们需要找到最大的数和最小的数,然后计算它们的差。在给出的代码中,有一个for循环用于遍历整数序列,并使用max_和min_变量来保存最大和最小的数。最后,通过计算max_-min_得到最大和最小的差并输出结果。因此,对于给定的输入样例,最大值和最小值的差为5。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [信息学奥赛一本通1112:最大值和最小值的差 视频题解](https://blog.csdn.net/weixin_42790071/article/details/112261065)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [Java Web开发实战1200例(第2卷)(完整版).(清华出版.卢瀚.王春斌).part3](https://download.csdn.net/download/pczlang/9548438)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值