Android(安卓)sd卡log日志
16lz
2021-12-04
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(); } }}
更多相关文章
- 代码中设置drawableleft
- android 3.0 隐藏 系统标题栏
- Android开发中activity切换动画的实现
- Android(安卓)学习 笔记_05. 文件下载
- Android中直播视频技术探究之—摄像头Camera视频源数据采集解析
- 技术博客汇总
- android 2.3 wifi (一)
- AndRoid Notification的清空和修改
- Android中的Chronometer