一个好用的Log管理类
public class L {
private static String className; //所在的类名
private static String methodName; //所在的方法名
private static int lineNumber; //所在行号
public static final int VERBOSE = 1; //显示Verbose及以上的Log
public static final int DEBUG = 2; //显示Debug及以上的Log
public static final int INFO = 3; //显示Info及以上的Log
public static final int WARN = 4; //显示Warn及以上的Log
public static final int ERROR = 5; //显示Error及以上的Log
public static final int NOTHING = 6; //全部不显示
public static final int LEVEL = NOTHING; //控制显示的级别
private L() {
}
public static boolean isDebuggable() {
return BuildConfig.DEBUG;
}
private static String createLog(String log) {
StringBuffer buffer = new StringBuffer();
buffer.append("[");
buffer.append(methodName);
buffer.append(":");
buffer.append(lineNumber);
buffer.append("]");
buffer.append(log);
return buffer.toString();
}
private static void getMethodNames(StackTraceElement[] sElements) {
className = sElements[1].getFileName();
methodName = sElements[1].getMethodName();
lineNumber = sElements[1].getLineNumber();
}
public static void v(String message) {
if (!isDebuggable()) {
return;
}
if (LEVEL <= VERBOSE) {
getMethodNames(new Throwable().getStackTrace());
Log.v(className, createLog(message));
}
}
public static void d(String message) {
if (!isDebuggable()) {
return;
}
if (LEVEL <= DEBUG) {
getMethodNames(new Throwable().getStackTrace());
Log.d(className, createLog(message));
}
}
public static void i(String message) {
if (!isDebuggable()) {
return;
}
if (LEVEL <= INFO) {
getMethodNames(new Throwable().getStackTrace());
Log.i(className, createLog(message));
}
}
public static void w(String message) {
if (!isDebuggable()) {
return;
}
if (LEVEL <= WARN) {
getMethodNames(new Throwable().getStackTrace());
Log.w(className, createLog(message));
}
}
public static void e(String message) {
if (!isDebuggable()) {
return;
}
if (LEVEL <= ERROR) {
getMethodNames(new Throwable().getStackTrace());
Log.e(className, createLog(message));
}
}
}
原文地址:http://www.devwiki.net/2015/06/24/Android-New-Log/
一个好用的Log管理类的更多相关文章
- XMPP得知--建立一个管理类
参考其他demo之后,设立一个管理类的发现看起来更舒服,理-- 但在建立与server连接其中.发现 Connect Error: { NSLocalizedDescription = &qu ...
- 控制uniFrame显示的一个管理类
控制uniFrame显示的一个管理类 (2016-03-29 06:41:17) 转载▼ 标签: delphi 分类: uniGUI 利用uniGUI Frame的机制来搭建项目,是非常好的实现方式, ...
- Android 性能优化(16)线程优化:Creating a Manager for Multiple Threads 如何创建一个线程池管理类
Creating a Manager for Multiple Threads 1.You should also read Processes and Threads The previous le ...
- Log统一管理类
import android.util.Log; /** * Log统一管理类 */ public class L{ private L(){ /* cannot be instantiated */ ...
- Android log 管理工具
1.logger 项目地址: https://github.com/orhanobut/logger 2.KLog 项目地址:https://github.com/ZhaoKaiQiang/KLog ...
- [Canvas]空战游戏进阶 增加己方子弹管理类
点此下载源码,可用Chrome打开观看. 图例: 代码: <!DOCTYPE html> <html lang="utf-8"> <meta http ...
- 160803、如何在ES6中管理类的私有数据
如何在ES6中管理类的私有数据?本文为你介绍四种方法: 在类的构造函数作用域中处理私有数据成员 遵照命名约定(例如前置下划线)标记私有属性 将私有数据保存在WeakMap中 使用Symbol作为私有属 ...
- Android学习笔记_64_手机安全卫士知识点归纳(4) 流量统计 Log管理 混淆打包 加入广告 自动化测试 bug管理
android 其实就是linux 上面包装了一个java的框架. linux 系统下 所有的硬件,设备(网卡,显卡等) 都是以文件的方式来表示. 文件里面包含的有很多设备的状态信息. 所有的流量相关 ...
- Android wifi管理类:WifiAdmin
1.wifi的五种状态: WIFI_STATE_DISABLED WIFI网卡不可用 WIFI_STATE_DISABLING WIFI网卡正在关闭 WIFI_STATE_ENABLED ...
随机推荐
- 佳佳的魔杖 (vijos 1283)
题目大意: 一根树枝有N段,每一段有一个分数,可以选取一些不完全包含(可以相交)的区间,每次选取可以得到区间里所有数之和的分数. 求最大得分. 解题过程: 1.很明显的dp,默认选取区间的顺序是从左往 ...
- android 定时器的使用
1.android中通常是使用AlarmManager来定时启动一个单次或重复多次操作的.具体的说就是我们通过AlarmManager设定一个时间和注册一个intent到系统中,然后在该时间到来时,系 ...
- iOS开发中关于nslog的几种流行做法小结
不管哪种方法,都必须在PCH文件中做下宏定义 DEBUG和RELEASE要分开,RELEASE时log打印要取消 方法一:简单直接,用几行代码搞定,简洁但功能少 #ifdef DEBUG #defin ...
- java基础-003
10.进程和线程 进程是执行者的应用程序,而线程是进程内部的一个执行序列.一个进程可以有多个线程.线程又叫轻量级进程. 创建线程的三种方式: I> 继承Thread类 II> 实现Runn ...
- dom添加事件
1.语法:document.getElementById('btn').addEventListener 2.可以添加多个EventListener,且不会覆盖 3.移除EventListener, ...
- 关于dllimport的使用
最近做一个动态加载插件的项目,插件中的dll 主要是各厂商各型号的读卡器的通用类库,stdapi.dll,WltRS.dll,有的还有进一步封装的dll,主要是为了简化通用类库的操作. 这些类库都是用 ...
- SQL优化-索引
(一)深入浅出理解索引结构 实际上,您可以把索引理解为一种特殊的目录.微软的SQL SERVER提供了两种索引:聚集索引(clustered index,也称聚类索引.簇集索引)和非聚集索引(nonc ...
- php大力力 [018节]如何联系大力力
有事儿就注册博客园,给我发 博客园站内的 短消息呗,唉,没有人联系我呀,啦啦啦,爱我爱我,快点爱我 2015-08-26 php大力力018.如何联系大力力
- MySQL数据库系统概述
了解MySQL数据库管理系统,内容如下: 一.基于数据库的PHP项目 目前动态网站都是基于数据库,将网站内容使用数据库管理系统去管理 用户, 栏目, 图片, 文章, 评论都 ...
- ecpilise引入Maven项目目录不正常,无JRE,无Maven Dependencies
原因是我的eclipse默认open perspective是java ee,改成java就恢复正常了.