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;
/**
* @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();
}
}
|