借鉴了imageload 项目的log
log封装类 :
package com.david.toolkit;
import android.util.Log;
/**
*
* 自定义log工具类 ,可以在项目之初设定项目的log tag
*
* 通过开关控制log是否打印以及打印级别
*
* 在项目发布时可以做一下设置将log关闭 ,
* 1、通过setEnable(false) 关闭所有log
* 2、setLogLevel(android.util.Log.WARN)限定只打印warn以上日志
* 3、发布打包时删除部分log代码
* 在project.properties中添加 proguard.config=proguard-project.txt
* 在proguard-project.txt中添加
*
* -assumenosideeffects class com.david.toolkit.L {
public static int v(...);
public static int d(...);
public static int i(...);
}
*
*
* @author David.Zhang
*
*/
public class L {
private static int LOG_LEVEL = android.util.Log.VERBOSE ;
private static boolean ENABLE = false ;
private static final String LOG_FORMAT = "\n%1$s\n%2$s";
private static String TAG = "===David.Zhang.toolkit.Debug===" ;
/**
* 打印log开关
* TRUE: 可以打印
* FALSE 不能打印
* @param enable
*/
public static void setEnable(boolean enable){
ENABLE = enable ;
}
/**
* 是否可以打印
* @return
*/
public static boolean isEnable(){
return ENABLE ;
}
/**
* 设置打印log 级别,取值参考
* {@link android.util.Log#VERBOSE}
* {@link android.util.Log#DEBUG}
* {@link android.util.Log#INFO}
* {@link android.util.Log#WARN}
* {@link android.util.Log#ERROR}
*
* 是否可以打印还需参考 {@link #isEnable()} 的取值
*
* @param level
*/
public static void setLogLevel (int level){
LOG_LEVEL = level ;
}
/**
* 设置tag , 如果不设置使用默认tag
* @param tag
*/
public static void setTag(String tag){
TAG = tag ;
}
public static void v(String tag ,String msg ){
log(Log.VERBOSE, null, tag, msg);
}
public static void v(String tag ,String msg ,Throwable tr ){
log(Log.VERBOSE, tr, tag, msg);
}
public static void d(String tag ,String msg ){
log(Log.DEBUG, null, tag, msg);
}
public static void d(String tag ,String msg ,Throwable tr ){
log(Log.DEBUG, tr, tag, msg);
}
public static void i(String tag ,String msg ){
log(Log.INFO, null, tag, msg);
}
public static void i(String tag ,String msg ,Throwable tr ){
log(Log.INFO, tr, tag, msg);
}
public static void w(String tag ,String msg ){
log(Log.WARN, null, tag, msg);
}
public static void w(String tag ,String msg ,Throwable tr ){
log(Log.WARN, tr, tag, msg);
}
public static void e(String tag ,String msg ){
log(Log.ERROR, null, tag, msg);
}
public static void e(String tag ,String msg ,Throwable tr ){
log(Log.ERROR, tr, tag, msg);
}
public static void log(int priority, String tag , String msg ) {
log(priority, null, tag, msg);
}
public static void log(int priority, Throwable ex, String tag , String msg ) {
if (!ENABLE || priority < LOG_LEVEL ) return;
String log ="";
if (ex != null) {
String logMessage = ex.getMessage() ;
String logBody = Log.getStackTraceString(ex);
log = String.format(LOG_FORMAT, logMessage, logBody);
}
Log.println(priority, TAG, tag + " +++++++>>> "+ msg + log);
}
/*
//
// 非静态
/
private boolean enable_module = true ;
private String tag_module = "" ;
public L(String tag ){
this(tag, true) ;
}
public L(String tag, boolean enable){
tag_module = tag ;
enable_module = enable ;
}
public void vm(String tag ,String msg ){
logvm(Log.VERBOSE, null, tag, msg);
}
public void dm(String tag ,String msg ){
log(Log.DEBUG, null, tag, msg);
}
public void im(String tag ,String msg ){
log(Log.INFO, null, tag, msg);
}
public void wm(String tag ,String msg ){
log(Log.WARN, null, tag, msg);
}
public void em(String tag ,String msg ){
log(Log.ERROR, null, tag, msg);
}
调用时根据需要可以再封装一层,coding阶段测试使用
package com.david.toolkit;
public class Log {
//
// 非静态
// ///
private boolean enable_module = true;
private String tag_module = "";
public Log(String tag) {
this(tag, true);
}
public Log(String tag, boolean enable) {
tag_module = tag;
enable_module = enable;
}
public void v( String msg) {
log(android.util.Log.VERBOSE, null, msg);
}
public void v( String msg, Throwable tr) {
log(android.util.Log.VERBOSE, tr, msg);
}
public void d( String msg) {
log(android.util.Log.DEBUG, null, msg);
}
public void d( String msg, Throwable tr) {
log(android.util.Log.DEBUG, tr, msg);
}
public void i( String msg) {
log(android.util.Log.INFO, null, msg);
}
public void i( String msg, Throwable tr) {
log(android.util.Log.INFO, tr, msg);
}
public void w( String msg) {
log(android.util.Log.WARN, null, msg);
}
public void w( String msg, Throwable tr) {
log(android.util.Log.WARN, tr, msg);
}
public void e( String msg) {
log(android.util.Log.ERROR, null, msg);
}
public void e( String msg, Throwable tr) {
log(android.util.Log.ERROR, tr, msg);
}
public void log(int priority, String msg) {
log(priority, null, msg);
}
private void log(int priority, Throwable ex, String msg) {
if (enable_module)
return;
L.log(priority, ex, tag_module, msg);
}
}