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 ...
随机推荐
- python学习笔记(十三): 多线程多进程
一.线程&进程 对于操作系统来说,一个任务就是一个进程(Process),比如打开一个浏览器就是启动一个浏览器进程,打开一个记事本就启动了一个记事本进程,打开两个记事本就启动了两个记事本进程, ...
- GeoServer之sqlserver插件安装
GeoServer之sqlserver插件安装 GeoServer可以直接从sqlserver中获取数据,用来发布wms服务.但是其sqlserver连接插件并没有直接集成在Geoserver中,需要 ...
- c++builder 画图 填充
c++builder 画图 填充 void __fastcall TForm2::Button1Click(TObject *Sender) { Canvas->Brush->Color ...
- spring与IOC,ioc与di的关系
- Presto资源组配置
{ "rootGroups": [ { "name": "global", "softMemoryLimit": &qu ...
- Inversions SGU - 180
这个是逆序对的裸题哇 归并排序或者树状数组~ 树状数组的话需要离散化一下··· emm确实很水很水很水··· 归并排序: #include <cstdio> #include <al ...
- Ubuntu14.04下FTP服务器的搭建配置 标签: ubuntuftp服务器虚拟机 2017-06-13 15:24 161人阅读 评
首先说明一下,我是在虚拟机中装的Ubuntu14.04,物理机是Win10,最初只是为了在两个系统间传输文件才在Ubuntu中安装了ftp服务器,从Windows端登陆其即可.最初也是按照网上的各种教 ...
- SQL 零碎点
1,插入数据后,返回主键ID值: INSERT INTO tablename (name) VALUES (@name);SELECT @@Identity; 使用 SELECT @@Identity ...
- mysqli_query(“set nams utf8”)为FALSE
经过过测试: mysqli_query("set nams utf8")必须在所有语句的执行之前,否则会返回FALSE. 看手册,说不建议用mysqli_query来设置编码,用 ...
- c#反射优化 表达式树
using System; using System.Collections.Generic; using System.Linq; using System.Linq.Expressions; us ...