1. public class L {
  2. private static String className; //所在的类名
  3. private static String methodName; //所在的方法名
  4. private static int lineNumber; //所在行号
  5.  
  6. public static final int VERBOSE = 1; //显示Verbose及以上的Log
  7. public static final int DEBUG = 2; //显示Debug及以上的Log
  8. public static final int INFO = 3; //显示Info及以上的Log
  9. public static final int WARN = 4; //显示Warn及以上的Log
  10. public static final int ERROR = 5; //显示Error及以上的Log
  11. public static final int NOTHING = 6; //全部不显示
  12.  
  13. public static final int LEVEL = NOTHING; //控制显示的级别
  14.  
  15. private L() {
  16. }
  17.  
  18. public static boolean isDebuggable() {
  19. return BuildConfig.DEBUG;
  20. }
  21.  
  22. private static String createLog(String log) {
  23.  
  24. StringBuffer buffer = new StringBuffer();
  25. buffer.append("[");
  26. buffer.append(methodName);
  27. buffer.append(":");
  28. buffer.append(lineNumber);
  29. buffer.append("]");
  30. buffer.append(log);
  31.  
  32. return buffer.toString();
  33. }
  34.  
  35. private static void getMethodNames(StackTraceElement[] sElements) {
  36. className = sElements[1].getFileName();
  37. methodName = sElements[1].getMethodName();
  38. lineNumber = sElements[1].getLineNumber();
  39. }
  40.  
  41. public static void v(String message) {
  42. if (!isDebuggable()) {
  43. return;
  44. }
  45.  
  46. if (LEVEL <= VERBOSE) {
  47. getMethodNames(new Throwable().getStackTrace());
  48. Log.v(className, createLog(message));
  49. }
  50. }
  51.  
  52. public static void d(String message) {
  53. if (!isDebuggable()) {
  54. return;
  55. }
  56.  
  57. if (LEVEL <= DEBUG) {
  58. getMethodNames(new Throwable().getStackTrace());
  59. Log.d(className, createLog(message));
  60. }
  61. }
  62.  
  63. public static void i(String message) {
  64. if (!isDebuggable()) {
  65. return;
  66. }
  67.  
  68. if (LEVEL <= INFO) {
  69. getMethodNames(new Throwable().getStackTrace());
  70. Log.i(className, createLog(message));
  71. }
  72. }
  73.  
  74. public static void w(String message) {
  75. if (!isDebuggable()) {
  76. return;
  77. }
  78.  
  79. if (LEVEL <= WARN) {
  80. getMethodNames(new Throwable().getStackTrace());
  81. Log.w(className, createLog(message));
  82. }
  83. }
  84.  
  85. public static void e(String message) {
  86. if (!isDebuggable()) {
  87. return;
  88. }
  89.  
  90. if (LEVEL <= ERROR) {
  91. getMethodNames(new Throwable().getStackTrace());
  92. Log.e(className, createLog(message));
  93. }
  94. }
  95. }

原文地址:http://www.devwiki.net/2015/06/24/Android-New-Log/

一个好用的Log管理类的更多相关文章

  1. XMPP得知--建立一个管理类

    参考其他demo之后,设立一个管理类的发现看起来更舒服,理-- 但在建立与server连接其中.发现 Connect Error: {     NSLocalizedDescription = &qu ...

  2. 控制uniFrame显示的一个管理类

    控制uniFrame显示的一个管理类 (2016-03-29 06:41:17) 转载▼ 标签: delphi 分类: uniGUI 利用uniGUI Frame的机制来搭建项目,是非常好的实现方式, ...

  3. Android 性能优化(16)线程优化:Creating a Manager for Multiple Threads 如何创建一个线程池管理类

    Creating a Manager for Multiple Threads 1.You should also read Processes and Threads The previous le ...

  4. Log统一管理类

    import android.util.Log; /** * Log统一管理类 */ public class L{ private L(){ /* cannot be instantiated */ ...

  5. Android log 管理工具

    1.logger 项目地址: https://github.com/orhanobut/logger 2.KLog 项目地址:https://github.com/ZhaoKaiQiang/KLog ...

  6. [Canvas]空战游戏进阶 增加己方子弹管理类

    点此下载源码,可用Chrome打开观看. 图例: 代码: <!DOCTYPE html> <html lang="utf-8"> <meta http ...

  7. 160803、如何在ES6中管理类的私有数据

    如何在ES6中管理类的私有数据?本文为你介绍四种方法: 在类的构造函数作用域中处理私有数据成员 遵照命名约定(例如前置下划线)标记私有属性 将私有数据保存在WeakMap中 使用Symbol作为私有属 ...

  8. Android学习笔记_64_手机安全卫士知识点归纳(4) 流量统计 Log管理 混淆打包 加入广告 自动化测试 bug管理

    android 其实就是linux 上面包装了一个java的框架. linux 系统下 所有的硬件,设备(网卡,显卡等) 都是以文件的方式来表示. 文件里面包含的有很多设备的状态信息. 所有的流量相关 ...

  9. Android wifi管理类:WifiAdmin

    1.wifi的五种状态: WIFI_STATE_DISABLED   WIFI网卡不可用 WIFI_STATE_DISABLING WIFI网卡正在关闭 WIFI_STATE_ENABLED     ...

随机推荐

  1. closeChrome

    function closeChrome(){ var browserName=navigator.appName; if (browserName=="Netscape") { ...

  2. Debugger Exception Notification

    --------------------------- Debugger Exception Notification --------------------------- Project PJSP ...

  3. 【STL】-priority_queue的用法

    初始化: priority_queue<int>                           maxPQ; priority_queue<int,vector<int& ...

  4. 11个Linux基础面试问题

    Q.1: Linux 操作系统的核心是什么? Shell Kernel Command Script Terminal 答: 内核(Kernel)是Linux 操作系统的核心.Shell是一个命令行解 ...

  5. 端午小长假--前端基础学起来04CSS选择器

    定义: 选择器{ 样式: } 选择器指明{}中的样式的作用对象,即作用于网页中的哪些元素 <head><meta http-equiv="Content-Type" ...

  6. SharePoint安全 - 攻破SharePoint(黑客工具介绍)

    博客地址 http://blog.csdn.net/foxdave SharePoint的安全性很高,这是我们潜意识里的第一印象,所以具体的安全性体现在哪并没仔细研究过.但是事实上确实没有绝对安全的东 ...

  7. IOS中nil/Nil/NULL的区别

    类与对象的概念 类是对同一类事物高度的抽象,类中定义了这一类对象所应具有的静态属性(属性)和动态属性(方法). 对象是类的一个实例,是一个具体的事物. 类与对象是抽象与具体的关系. 类其实就是一种数据 ...

  8. 在C,C++,JAVA中int,char,各占几个字节

    int 在C和C++的占用2个字节,在java中4个字节char在C和C+中占一个字节 Java中无论是汉字还是英文字母都是用Unicode编码来表示的,一个Unicode码是16位,每字节是8位,所 ...

  9. Html.ActionLink , Url.Action

    也来总结一下 以后省的忘了 都是从controller中获取到action名字返回 html.actionlink 返回的是带<a> 标签的超链接 url.action 是返回正常cont ...

  10. JVM值内存垃圾回收监控之jstat

    如何判断JVM垃圾回收是否正常?一般的top指令基本上满足不了这样的需求,因为top主要监控的是总体的系统资源,很难定位到java应用程序. Jstat是JDK自带的一个轻量级小工具.全称“Java ...