import android.os.Environment;import android.util.Log;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.PrintWriter;import java.io.StringWriter;import java.io.Writer;import java.text.DateFormat;import java.text.SimpleDateFormat;import java.util.Date;public class LOG {    private static final int LEVEL_I = 1;    private static final int LEVEL_D = 2;    private static final int LEVEL_W = 3;    private static final int LEVEL_E = 4;    private static final String FILEPATH = "/folderPath";    private static final String FILENAME = "log.txt";    private static DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss");    public static void logD(String msg) {        log(LEVEL_D, msg);    }    public static void logI(String msg) {        log(LEVEL_I, msg);    }    public static void logW(String msg) {        log(LEVEL_W, msg);    }    public static void logE(String msg) {        log(LEVEL_E, msg);    }    public static void logE(Throwable ex) {        if (!AppConstants.DEBUG) {            return;        }        Writer writer = new StringWriter();        PrintWriter printWriter = new PrintWriter(writer);        ex.printStackTrace(printWriter);        Throwable cause = ex.getCause();        while (cause != null) {            cause.printStackTrace(printWriter);            cause = cause.getCause();        }        printWriter.close();        String result = writer.toString();        final Throwable t = AppConstants.DEBUG ? new Throwable() : null;        final StackTraceElement[] elements = t != null ? t.getStackTrace() : null;        String callerClassName = t != null ? elements[2].getClassName() : "N/A";        int pos = callerClassName.lastIndexOf('.');        if (pos >= 0) {            callerClassName = callerClassName.substring(pos + 1);        }        final String tag = callerClassName;        Log.e(tag, result);        try {            write(tag, result);        } catch (IOException e) {            e.printStackTrace();        }    }    private static void log(int level, String msg) {        if (!AppConstants.DEBUG) {            return;        }        final Throwable t = AppConstants.DEBUG ? new Throwable() : null;        final StackTraceElement[] elements = t != null ? t.getStackTrace() : null;        String callerClassName = t != null ? elements[2].getClassName() : "N/A";        String callerMethodName = t != null ? elements[2].getMethodName() : "N/A";        int pos = callerClassName.lastIndexOf('.');        if (pos >= 0) {            callerClassName = callerClassName.substring(pos + 1);        }        final String tag = callerClassName;        final StringBuffer buf = new StringBuffer();        buf.append("[").append(callerMethodName).append("]  ").append(msg);        switch (level) {            case LEVEL_I:                Log.i(tag, buf.toString());                break;            case LEVEL_D:                Log.d(tag, buf.toString());                break;            case LEVEL_W:                Log.w(tag, buf.toString());                break;            case LEVEL_E:                Log.e(tag, buf.toString());                break;            default:                break;        }        try {            write(tag, buf.toString());        } catch (IOException e) {            e.printStackTrace();        }    }    private static void write(String tag, String log) throws IOException {        String time = formatter.format(new Date(System.currentTimeMillis()));        String logger = time + ">>>>>" + tag + ">>>>>" + ">>>>>" + log + "\n\n";        if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {            File dir = Environment.getExternalStorageDirectory();            File file = new File(dir, FILEPATH);            if (!file.exists()) {                file.mkdirs();            }            FileOutputStream fos = new FileOutputStream(file + "/" + FILENAME, true);            fos.write(logger.getBytes());            fos.close();        }    }}

更多相关文章

  1. 代码中设置drawableleft
  2. android 3.0 隐藏 系统标题栏
  3. Android开发中activity切换动画的实现
  4. Android(安卓)学习 笔记_05. 文件下载
  5. Android中直播视频技术探究之—摄像头Camera视频源数据采集解析
  6. 技术博客汇总
  7. android 2.3 wifi (一)
  8. AndRoid Notification的清空和修改
  9. Android中的Chronometer

随机推荐

  1. delphi xe5 android sample
  2. Android用户登录数据存储的三种方式
  3. Android(安卓)对话框(Dialog)大全
  4. Android(安卓)游戏开发中 OnTouchEvent()
  5. Android(安卓)Vector(Vector/Vector动画)
  6. Android(安卓)联系人、选择联系人组件库
  7. 仿苹果弹性布局
  8. Android(安卓)自定义View学习(十一)——V
  9. android gridview点击子选项动态改变item
  10. android.os.Build的一些使用方法