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

时间: 2024-08-18 06:32:07

Android Logging的相关文章

HttpComponents Client for Android 4.3.5

Apache HttpComponents 项目组发布 HttpComponents HttpClient 4.3.5 GA 的 Google Android 移植版.该版本部分兼容 Apache HttpClient 4.3,差别主要体现在: (1) Compiled against HttpClient 4.0 APIs. (2) Commons Logging replaced with Android Logging. (3) Base64 implementation from Com

《Android应用开发与系统改造实战》——1.5节Android NDK开发环境搭建

1.5 Android NDK开发环境搭建 Android应用开发与系统改造实战 1.5.1 Android NDK简介 Android NDK是编译嵌入在Android应用中的原生代码(C或C++)的工具. Android应用运行在Dalvik虚拟机上.NDK允许开发者用原生代码(C或C++)实现应用的一部分.这将给某些应用带来好处,这种方式可重用代码,而且在某些情况下可加快运行速度. NDK提供了将C和C++源代码生成原生代码库的工具和文件:提供了将原生库嵌入apk文件的方法:提供了兼容An

学 Kotlin,看这一篇就够了

为什么学习Kotlin? 欢呼声热烈 谷歌宣布 Kotlin 成 Android 开发一级语言 Kotlin on Android. Now official 17 位谷歌 Android 开发专家是如何看待 Kotlin 的? 为什么你该摒弃 Java ,全面转向 Kotlin 语言? 为什么说Kotlin值得一试 如何学习Kotlin? 官网以及相关文档 Kotlin 官网 Kotlin 文档 Kotlin 博客 Kotlin 中文文档 Kotlin on GitHub Kotlin开发实践

安卓系统启动脚本init.rc说明文件readme.txt翻译

  本说明文件位于system/core/init/readme.txt 本文参考深入解析安卓系统一书,进行翻译,版权部分归书的作者  刘超,资深Android专家,系统架构师. 博客地址:http://blog.csdn.net/u013234805/article/details/45438219 Android Init Language --------------------- The Android Init Language consists of four broadclasse

Android使用Handler进行实例化(new)时报错的原因及解决方法

Android使用Handler进行实例化(new)时, 如: private Handler handler = new Handler(); 会报错"Handler is abstract, cannot be instantiated.", 提示使用, 其他实例化方式. 原因: 导入(import)库发生错误, 使用Android的句柄(handler)库, 不是java的句柄库; 使用"import android.os.Handler;" 代替 "

Android RoboGuice2使用指南(4) 综合示例Astroboy

前面介绍了RogoGuice2.0的基本用法,其它使用可以参见RoboGuice1.1开发 指南,2.0中提供了对Fragment,View(自定义View中使用注入)的支持,本博 客不再一一介绍. 本例使用的是RoboGuice 开发包中的简单示例 Astroboy(阿童木).涉及的使用RoboGuice2.0 的一些常用方法. 本例 下载(Eclipse项目). 下面对项目中RoboGuice2的使用进行解释.因为 本例没使用自定义绑定,所以无需使用res/values/roboguice.

Android Studio 小技巧/快捷键 合集

本文讲的是Android Studio 小技巧/快捷键 合集, 原文链接: Android Studio Tips by Philippe Breault 原文作者 : Philippe Breault 译文出自 : 掘金翻译计划 译者 : Jaeger, Brucezz 校对者 :Glow Chiang, Void Main 转载请联系,并注明出处. 写在前面 本文翻译自 Android Studio Tips by Philippe Breault,一共收集了62个 Android Stud

Android的logger机制分析

分析安卓的Logger机制 一.概述 Logger机制是在Android系统中提供的一个轻量级的日志系统,这个日志系统是以驱动程序的形式在内核空间实现的,在用户空间分别提供了Java接口和C/C++接口来使用这个日志系统,使用的接口取决于编写的是Android应用程序还是系统组件. 下面我准备从应用开发和源码分析两部分来分析安卓的Logger机制. 二.从Android应用程序开发角度看Logger机制 这一部分将简要地介绍一下在Android应用程序开发中Log的使用方法 2.1概述  在程序

Android通过Path实现复杂效果(搜索按钮+时钟的实现 +svg实现)

Path : 在Android中复杂的图形的绘制绝大多数是通过path来实现,比如绘制一条曲线,然后让一个物体随着这个曲线运动,比如搜索按钮,比如一个简单时钟的实现: 那么什么是path呢! 定义:path  就是路径,就是图形的路径的集合,它里边包含了路径里边的坐标点,等等的属性.我们可以获取到任意点的坐标,正切值. 那么要获取Path上边所有点的坐标还需要用到一个类,PathMeasure; PathMesure: PathMeasure是一个用来测量Path的类,主要有以下方法: 构造方法