Android sd卡log日志

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();

        }

    }

}

 

你可能感兴趣的:(android)