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 + "\n");
};
}.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) + "\n");
};
}.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();
} }
Android开发调试日志工具类[支持保存到SD卡]的更多相关文章
- Android自定义照相机实现(拍照、保存到SD卡,利用Bundle在Acitivity交换数据)
Android自定义照相机实现 近期小巫在学校有一个创新项目,也不是最近,是一个拖了很久的项目,之前一直没有去搞,最近因为要中期检查,搞得我跟小组成员一阵忙活,其实开发一款照相机软件并不太难,下面就是 ...
- wemall app商城源码android开发MD5加密工具类
wemall-mobile是基于WeMall的android app商城,只需要在原商城目录下上传接口文件即可完成服务端的配置,客户端可定制修改.本文分享android开发MD5加密工具类主要代码,供 ...
- Android相机、相册获取图片显示并保存到SD卡
Android相机.相册获取图片显示并保存到SD卡 [复制链接] 电梯直达 楼主 发表于 2013-3-13 19:51:43 | 只看该作者 |只看大图 本帖最后由 happy小妖同学 ...
- [置顶] Android学习系列-把文件保存到SD卡上面(6)
Android学习系列-把文件保存到SD卡上面(5) 一般多媒体文件,大文件需要保存到SD卡中.关键点如下: 1,SD卡保存目录:mnt/sdcard,一般采用Environment.getExter ...
- Android—将Bitmap图片保存到SD卡目录下或者指定目录
直接上代码就不废话啦 一:保存到SD卡下 File file = new File(Environment.getExternalStorageDirectory(), System.currentT ...
- Android 将文件保存到SD卡,从卡中取文件,及删除文件
//保存到SD卡 private static String sdState = Environment.getExternalStorageState(); private static S ...
- Libgdx实现异步加载网络图片并保存到SD卡或者data/data目录下边
Libgdx实现异步加载网络图片并保存到SD卡或者data/data目录下边,当本地有图片的时候,直接从本地读取图片,如果本地没有图片,将从服务器异步加载图片 package com.example. ...
- Linux笔记(开机自动将kerne log保存到SD卡中)
有时候为了测试机器的稳定性,需要煲机测试几天的情况,这个时候机器已经封装好,不能再接串口线出来. 为了追溯问题,就需要将log信息保存下来. 于是就需要这样一个功能:系统启动后,自动将kernel的l ...
- Android utils 之 日志工具类
工具类 在开发的过程中,我们时常会对代码执行特定的处理,而这部分处理在代码中可能多次用到,为了代码的统一性.规范性等,通过建工具类的方式统一处理.接下来我会罗列各种工具类. 日志工具类 在utils文 ...
随机推荐
- 说说关于php内置函数curl_init()
昨天在我本地的项目,调试时碰到无法识别curl_init()方法,网上查了查才知道是我本地的php.ini文件里没加载上,完了把extension=php_curl.dll前面的;去掉后就好了,注意一 ...
- QLineEdit 仿QQ签名框
今天鼓捣了半天,终于实现了自定义Qt中的QlineEdit控件的大致效果. 这个问题对于新手而言,主要有以下几个难点: 1.继承QLineEdit控件 2.QSS设置QLineEdit的相关样式,可以 ...
- C#版二维码生成器附皮肤下载
原文 C#版二维码生成器附皮肤下载 前言 本文所使用的二维码生成代码是谷歌开源的条形码图像处理库完成的,c#版的代码可去https://code.google.com/p/zxing/download ...
- spring MVC 如何获取session并实现传值到前台
后台获取session: @RequestMapping("/usrlogin") public ModelAndView usrlogin(@RequestParam Strin ...
- 严重: Servlet.service() for servlet jsp threw exception java.lang.IllegalStateException: getOutputStream() has already been called
错误: 严重: Servlet.service() for servlet jsp threw exception java.lang.IllegalStateException: getOutput ...
- Oracle成长点点滴滴(3)— 权限管理
上篇我们解说了创建用户以及主要的授权问题.以下我们来解说权限包含对象权限和系统权限. 事实上上节课我们解说就是系统的权限.系统权限就是一些创建表了,表空间等等的系统的权限. 1. 系统权限 ...
- android中关于ListView的卡位说明
需求:做项目的时候,需要将ListView的header的一个Tab卡位,即listView滑动后,Header的某一个部分可以定在ListView的顶端卡住. 解决的方案:监听ListView的滑动 ...
- android软键盘的管理和属性的设置
android:windowSoftInputMode activity主窗口与软键盘的交互模式,可以用来避免输入法面板遮挡问题,Android1.5后的一个新特性. 这个属性能影响两件事情: [一] ...
- Java基础03 构造器与方法重载
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 在方法与数据成员中,我们提到,Java中的对象在创建的时候会初始化(initial ...
- UML03-类图
1.在类图中,聚合关系表达总体与局部的关系. 2.请根据下面的需求,画出用例图和类图. 系统允许管理员通过磁盘加载存货数据来运行存货清单报告: 管理员通过从磁盘加载存货数据.向磁盘保存存货数据来更新存 ...