Android Logging

简介:

Here is HauteLook’s logger class from our Android Code Library. It displays class name, method name and line number per line of log message.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
package  com.hautelook.android.lib.logger;
  
/**
  * @authorjimmy@hautelook.com
  * @copyright 2011 HauteLook
  *
  * Description:
  *   Simple logger that displays: class name, method name and line number
  *
  *
  * Usage:
 
  *   Use this class directly or customize it by extending it.
 
  *      HLlog.i("");
  *      HLLog.i("called");
  *      HLLog.i("called","tag");
  *  
  *      L.i();
  *      L.i("called");
  *      L.i("called","tag");
  *
  * Sub-classing example:
  *
  *    // C.DEBUG = boolean true/false (project specific constant class)
  *
  *    public class L extends HLLog {
  *    
  *           public static String DEFAULT_TAG = "HauteLook";
  *    
  *           public static void i() {
  *                if(C.DEBUG) callLogger("i", DEFAULT_TAG, "");
  *           }
  *    
  *           public static void i(String message) {
  *                  if(C.DEBUG) callLogger("i", DEFAULT_TAG, message);
  *           }
  *
  *           public static void i(String message, String tag) {
  *                  if(C.DEBUG) callLogger("i", tag, message);
  *           }
  *
  *    }
 
  */
  
import  java.lang.reflect.InvocationTargetException;
import  java.lang.reflect.Method;
import  android.util.Log;
  
@SuppressWarnings ( "unused" )
publicclass HLLog {
  
        publicstatic String DEFAULT_TAG = "HauteLookLib" ;
  
        finalstaticintdepth = 4 ;
  
        publicstaticvoid i(String message) {
               callLogger( "i" , DEFAULT_TAG, message);
        }
  
        publicstaticvoid i(String message, String tag) {
               callLogger( "i" , tag, message);
        }
  
        publicstaticvoid d(String message) {
               callLogger( "d" , DEFAULT_TAG, message);
        }
  
        publicstaticvoid d(String message, String tag) {
               callLogger( "d" , tag, message);
        }
  
        publicstaticvoid e(String message) {
               callLogger( "e" , DEFAULT_TAG, message);
        }
  
        publicstaticvoid e(String message, String tag) {
               callLogger( "e" , tag, message);
        }
  
        publicstaticvoid w(String message) {
               callLogger( "w" , DEFAULT_TAG, message);
        }
  
        publicstaticvoid w(String message, String tag) {
               callLogger( "w" , tag, message);
        }
  
        publicstaticvoid v(String message) {
               callLogger( "v" , DEFAULT_TAG, message);
        }
  
        publicstaticvoid v(String message, String tag) {
               callLogger( "v" , tag, message);
        }
  
        @SuppressWarnings ( "rawtypes" )
        publicstaticvoid callLogger(String methodName, String tag, String message) {
               final  StackTraceElement[] ste = Thread.currentThread().getStackTrace();
               try  {
                      Class cls = Class.forName( "android.util.Log" );
                      Method method = cls.getMethod(methodName, String. class ,       String. class );
                      method.invoke( null , tag, getTrace(ste) + message);
               } catch  (ClassNotFoundException e) {
                      e.printStackTrace();
               } catch  (IllegalArgumentException e) {
                      e.printStackTrace();
               } catch  (SecurityException e) {
                      e.printStackTrace();
               } catch  (IllegalAccessException e) {
                      e.printStackTrace();
               } catch  (InvocationTargetException e) {
                      e.printStackTrace();
               } catch  (NoSuchMethodException e) {
                      e.printStackTrace();
               }
        }
  
        publicstatic String getTrace(StackTraceElement[] ste) {
               return "["  + getClassName(ste) + "]["  + getMethodName(ste) + "]["  + getLineNumber(ste) + "] " ;
        }
  
        publicstatic String getClassPackage(StackTraceElement[] ste) {
               return  ste[depth].getClassName();
        }
  
        publicstatic String getClassName(StackTraceElement[] ste) {
               String[] temp = ste[depth].getClassName().split( "\\." );
               return  temp[temp.length - 1 ];
        }
  
        publicstatic String getMethodName(StackTraceElement[] ste) {
               return  ste[depth].getMethodName();
        }
  
        publicstaticint getLineNumber(StackTraceElement[] ste) {
               return  ste[depth].getLineNumber();
        }
  
}
欢迎加群互相学习,共同进步。QQ群:iOS: 58099570 | Android: 330987132 | Go:217696290 | Python:336880185 | 做人要厚道,转载请注明出处!http://www.cnblogs.com/sunshine-anycall/p/3479070.html
相关文章
|
Android开发
[RK3568 Android11]什么是Android EventLog
[RK3568 Android11]什么是Android EventLog
84 0
[RK3568 Android11]什么是Android EventLog
|
消息中间件 Java Android开发
android log 学习
一,Bug出现了, 需要“干掉”它 bug一听挺吓人的,但是只要你懂了,android里的bug是很好解决的,因为android里提供了LOG机制,具体的底层代码,以后在来分析,只要你会看bug, android里应用开发也就很简单了。
1056 0
|
XML Java Android开发
|
数据库 Android开发 数据库管理
|
Shell Android开发
|
Android开发 数据格式 JSON
|
Android开发 容器

热门文章

最新文章