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(); } } |
Android Logging的更多相关文章
- Android Native 代码NDK开发学习笔记
引用:http://www.kunli.info/2011/08/21/android-native-code-study-note/ JNI,全称Java Native Interface,是用于让 ...
- Android Debugging
Debugging methods for Android Contents [hide] 1 Debuggers 1.1 Kernel and User co-debug with GDB on ...
- 【转】Android使用Log4j例子
Step 1 Download Log4J library from http://logging.apache.org/log4j/1.2/download.html Step 2 Configur ...
- 6、android 普通日志输出到SD卡
这是本人见过写博文最负责的一个人: http://www.crifan.com/android_try_use_android_logging_log4j_to_output_log_to_sd_ca ...
- Android中使用logwrapper来重定向应用程序的标准输出
在Android应用程序调试中,有时候第三方应用程序的日志输出是通过printf之类的标准函数输出的,logcat不能捕获这些日志,一个方法是使用logwrapper命令来执行第三方应用程序,logw ...
- android从应用到驱动之—camera(2)---cameraHAL的实现
本文是camera系列博客,上一篇是: android从应用到驱动之-camera(1)---程序调用流程 本来想用这一篇博客把cameraHAL的实现和流程都给写完的.搞了半天,东西实在是太多了.这 ...
- android从应用到驱动之—camera(2)---cameraHAL的实现
本来想用这一篇博客把cameraHAL的实现和流程都给写完的.搞了半天,东西实在是太多了.这篇先写cameraHAL的基本实现框架,下一篇在具体写camerahal的流程吧. cameraHAL的实现 ...
- android开发教程(八)——环境搭建之java-ndk
目录 android ndk是android用于开发本地代码的开发工具包.它提供C/C++交叉编译工具.android内核.驱动.已有的C/C++代码,都需要ndk来支持开发. 目前支持以下平台:ar ...
- Android 启动过程总结
SystemServer的启动 frameworks/base/services/java/com/android/server/SystemServer.java: run() 其中调用Activi ...
随机推荐
- 深入浅出 Java Concurrency (12): 锁机制 part 7 信号量(Semaphore)
Semaphore 是一个计数信号量.从概念上讲,信号量维护了一个许可集.如有必要,在许可可用前会阻塞每一个 acquire(),然后再获取该许可.每个 release() 添加一个许可,从而可能 ...
- [Z]Password-based encryption in Java: salt and key derivation
http://www.javamex.com/tutorials/cryptography/pbe_salt.shtml 另外,这个网站好像有很多很深入而且很详尽的教程.目测是个类似于官方的或者大牛们 ...
- halcon连续采集图像
dev_close_window()dev_update_window('off')create_bar_code_model ([], [], BarCodeHandle)dev_open_wind ...
- POI-Excel表格导入和导出
ExcelWriter /** * @author zuzhilong * @date 2013-10-10 下午08:04:02 * @desc 生成导出Excel文件对象 * @modify * ...
- Delphi IOS 后台定时器
3.这里有一个问题,就是客户端是通过心跳来和服务端保持连接,心跳是由定时器触发的,当我退到后台以后,定时器方法被挂起,那么通过如下设置来在后台运行定时器 beginBackgroundTaskWith ...
- 在EXCEL中使用SQL语句查询
SQL语句在数据库使用中十分重要. 在EXCEL中可以不打开工作簿,就获取数据,对多工作簿操作很用,也很快. 对大量数据处理,比循环快很多,但是比词典方法还有点距离(可惜我还没有学会词典). 对数据库 ...
- 读取resource下文件
ArrayList<PatrolOper> patrolOpers = new ArrayList<>(); String jsonData = null; File json ...
- ES6中新添加的Array.prototype.fill
用法 array.fill(start=0, end=this.length) 示例 [1, 2, 3].fill(4) // [4, 4, 4] [1, 2, 3].fill(4, 1) // [1 ...
- PHP 数组中出现中文乱码,json_encode返回结果为null 或false
想要解决这个问题,没有特别方便的方法,只有循环数组,将数组中的key和value字符串转码,转换为utf-8,即可解决问题. 代码示例:
- spring bean单例注入与用单例模式通过class.getinstance()区别?
1.action的某个方法中,用以下代码获得redis单例实例 RedisDelegate redisDelegate = RedisDelegate.getInstance(); redisDele ...