github项目解析(五)-->android日志框架
转载请标明出处:一片枫叶的专栏
本文主要讲解的是自己实现一个简单的android日志框架,可以在android studio控制台中输入日志信息,其简单的使用方式:
L.v("...");L.d("...");L.i("...");L.w("...");L.d("...");
其中v、d、i、w、d分别代表着不同的日志级别,和android原生的Log日志级别是相同的。
(一)相关说明
为了熟悉github与Jcenter代码库的使用,编写了一个小的android日志框架,主要参考的是logger框架;
(二)相关知识点
- android中获取类名,方法名,与代码行数:
StackTraceElement[] stackTrace = Thread.currentThread().getStackTrace();int index = 4;String className = stackTrace[index].getFileName();String methodName = stackTrace[index].getMethodName();int lineNumber = stackTrace[index].getLineNumber();
- android中日志级别的定义:
1、Log.v 的输出颜色为黑色的,输出大于或等于VERBOSE日志级别的信息
2、Log.d的输出颜色是蓝色的,输出大于或等于DEBUG日志级别的信息
3、Log.i的输出为绿色,输出大于或等于INFO日志级别的信息
4、Log.w的输出为橙色, 输出大于或等于WARN日志级别的信息
5、Log.e的输出为红色,仅输出ERROR日志级别的信息.
(三)代码实现
package com.example.aaron.library;import android.util.Log;/** * Created by aaron on 15/11/27. * 模仿logger,创建自己的日志操作类 */public class MLog { public static final String TAG = MLog.class.getSimpleName(); /** * 控制变量,是否显示log日志 */ public static boolean isShowLog = false; public static String defaultMsg = ""; public static final int V = 1; public static final int D = 2; public static final int I = 3; public static final int W = 4; public static final int E = 5; /** * 初始化控制变量 * @param isShowLog */ public static void init(boolean isShowLog) { MLog.isShowLog = isShowLog; } /** * 初始化控制变量和默认日志 * @param isShowLog * @param defaultMsg */ public static void init(boolean isShowLog, String defaultMsg) { MLog.isShowLog = isShowLog; MLog.defaultMsg = defaultMsg; } public static void v() { llog(V, null, defaultMsg); } public static void v(Object obj) { llog(V, null, obj); } public static void v(String tag, Object obj) { llog(V, tag, obj); } public static void d() { llog(D, null, defaultMsg); } public static void d(Object obj) { llog(D, null, obj); } public static void d(String tag, Object obj) { llog(D, tag, obj); } public static void i() { llog(I, null, defaultMsg); } public static void i(Object obj) { llog(I, null, obj); } public static void i(String tag, String obj) { llog(I, tag, obj); } public static void w() { llog(W, null, defaultMsg); } public static void w(Object obj) { llog(W, null, obj); } public static void w(String tag, Object obj) { llog(W, tag, obj); } public static void e() { llog(E, null, defaultMsg); } public static void e(Object obj) { llog(E, null, obj); } public static void e(String tag, Object obj) { llog(E, tag, obj); } /** * 执行打印方法 * @param type * @param tagStr * @param obj */ public static void llog(int type, String tagStr, Object obj) { String msg; if (!isShowLog) { return; } StackTraceElement[] stackTrace = Thread.currentThread().getStackTrace(); int index = 4; String className = stackTrace[index].getFileName(); String methodName = stackTrace[index].getMethodName(); int lineNumber = stackTrace[index].getLineNumber(); String tag = (tagStr == null ? className : tagStr); methodName = methodName.substring(0, 1).toUpperCase() + methodName.substring(1); StringBuilder stringBuilder = new StringBuilder(); stringBuilder.append("[ (").append(className).append(":").append(lineNumber).append(")#").append(methodName).append(" ] "); if (obj == null) { msg = "Log with null Object"; } else { msg = obj.toString(); } if (msg != null) { stringBuilder.append(msg); } String logStr = stringBuilder.toString(); switch (type) { case V: Log.v(tag, logStr); break; case D: Log.d(tag, logStr); break; case I: Log.i(tag, logStr); break; case W: Log.w(tag, logStr); break; case E: Log.e(tag, logStr); break; } }}
(四)如何上传github
参考:github项目解析(一)–>上传android项目至github
(五)如何将代码上传至JCenter
参考: github项目解析(二)–>将Android项目发布至JCenter代码库
(六)使用方式
1)在build.gradle中引用MLog框架
dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) testCompile 'junit:junit:4.12' compile 'com.android.support:appcompat-v7:23.1.1' compile 'com.android.support:design:23.1.1' compile 'com.yipianfengye:MLog:1.0.0'}
2) 自定义Application
<application android:name=".MApplication" android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme" >
3)在自定义的Application的onCreate方法中初始化MLog框架
/** * Created by liuchao on 2016/1/26. */public class MApplication extends Application{ @Override public void onCreate() { super.onCreate(); MLog.init(true); }}
4)在代码中使用MLog框架
fab.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { MLog.i("测试MLog框架!!!"); } });
附:源码地址(github即使用方式)
https://github.com/yipianfengye/MLog
另外对github项目,开源项目解析感兴趣的同学可以参考我的:
github项目解析(一)–>上传android项目至github
github项目解析(二)–>将Android项目发布至JCenter代码库
github项目解析(三)–>android内存泄露监测之leakcanary
github项目解析(四)–>动态更改TextView的字体大小
更多相关文章
- 将support的包名转换成androidx的包名
- 七款android地图 [Map] 开源项目框架分类总汇
- React Native 运行android程序报SDK文件不存在错误
- AIDL的实例,看一看结构
- ndk完整编译cocos2dx项目总结
- Jenkins构建时’Users/Mac/Library/Android/sdk’ does not exis
- android r cannot be resolved to a variable 错误以及 所有的文
- Android(安卓)Studio导入SlidingMenu类库的方法(其他类库应该也适
- 总结系列-硬件加速