zoukankan      html  css  js  c++  java
  • Android开发调试日志工具类[支持保存到SD卡]

    直接上代码:


    package com.example.callstatus;
    
    import java.io.File;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.io.PrintWriter;
    import java.io.StringWriter;
    import java.net.UnknownHostException;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    
    import android.annotation.SuppressLint;
    import android.os.Environment;
    import android.util.Log;
    
    /**
     * Android开发调试日志工具类[支持保存到SD卡]<br>
     * <br>
     * 
     * 须要一些权限: <br>
     * <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <br>
     * <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" /><br>
     * 
     * @author PMTOAM
     * 
     */
    @SuppressLint("SimpleDateFormat")
    public class MyLog
    {
    
    	public static final String CACHE_DIR_NAME = "dPhoneLog";
    	
    	public static boolean isDebugModel = true;// 是否输出日志
    	public static boolean isSaveDebugInfo = true;// 是否保存调试日志
    	public static boolean isSaveCrashInfo = true;// 是否保存报错日志
    
    	public static void v(final String tag, final String msg)
    	{
    		if (isDebugModel)
    		{
    			Log.v(tag, "--> " + msg);
    		}
    	}
    
    	public static void d(final String tag, final String msg)
    	{
    		if (isDebugModel)
    		{
    			Log.d(tag, "--> " + msg);
    		}
    	}
    
    	public static void i(final String tag, final String msg)
    	{
    		if (isDebugModel)
    		{
    			Log.i(tag, "--> " + msg);
    		}
    	}
    
    	public static void w(final String tag, final String msg)
    	{
    		if (isDebugModel)
    		{
    			Log.w(tag, "--> " + msg);
    		}
    	}
    
    	/**
    	 * 调试日志,便于开发跟踪。

    * @param tag * @param msg */ public static void e(final String tag, final String msg) { if (isDebugModel) { Log.e(tag, "--> " + msg); } if (isSaveDebugInfo) { new Thread() { public void run() { write(time() + tag + " --> " + msg + " "); }; }.start(); } } /** * try catch 时使用。上线产品可上传反馈。

    * @param tag * @param tr */ public static void e(final String tag, final Throwable tr) { if (isSaveCrashInfo) { new Thread() { public void run() { write(time() + tag + " [CRASH] --> " + getStackTraceString(tr) + " "); }; }.start(); } } /** * 获取捕捉到的异常的字符串 * @param tr * @return */ public static String getStackTraceString(Throwable tr) { if (tr == null) { return ""; } Throwable t = tr; while (t != null) { if (t instanceof UnknownHostException) { return ""; } t = t.getCause(); } StringWriter sw = new StringWriter(); PrintWriter pw = new PrintWriter(sw); tr.printStackTrace(pw); return sw.toString(); } /** * 标识每条日志产生的时间 * @return */ private static String time() { return "[" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date( System.currentTimeMillis())) + "] "; } /** * 以年月日作为日志文件名 * @return */ private static String date() { return new SimpleDateFormat("yyyy-MM-dd").format(new Date(System .currentTimeMillis())); } /** * 保存到日志文件 * @param content */ public static synchronized void write(String content) { try { FileWriter writer = new FileWriter(getFile(), true); writer.write(content); writer.close(); } catch (IOException e) { e.printStackTrace(); } } /** * 获取日志文件路径 * @return */ public static String getFile() { File sdDir = null; if (Environment.getExternalStorageState().equals( android.os.Environment.MEDIA_MOUNTED)) sdDir = Environment.getExternalStorageDirectory(); File cacheDir = new File(sdDir + File.separator + CACHE_DIR_NAME); if (!cacheDir.exists()) cacheDir.mkdir(); File filePath = new File(cacheDir + File.separator + date() + ".txt"); return filePath.toString(); } }




  • 相关阅读:
    HFish 源码Git下载 源码编译执行
    Windows注册表-学习总结
    利用PHPStudy搭建Xdebug调试环境
    Python3报错Crypto失败(from Crypto.Cipher import AES ModuleNotFoundError: No module named 'Crypto')
    Django后台管理admin字段控制显示长度(字段内容过长,省略号替代)
    PHP代码审计-小题一道
    golang编程-小问题
    迅雷影音播放器-ass字幕乱码-问题
    《独自等待》观影有感
    Python urllib URL 处理模块
  • 原文地址:https://www.cnblogs.com/lcchuguo/p/5128331.html
Copyright © 2011-2022 走看看