Android输出调试日志至文件中
2016-04-14 11:52
495 查看
本博客讲述的是android输出日志到文件中,不依赖于任何类,仅需配置读写外部存储卡的权限,可叠加输出日志文件,可区别调试模式与正式发布版本进行选择性输出。可直接在项目中使用。下面贴上代码,代码可到(LogUtils)下载,密码:hvqw。
1.申请权限
2.核心代码
1.申请权限
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"> </uses-permission></uses-permission>
2.核心代码
import java.io.BufferedWriter; import java.io.File; import java.io.FileOutputStream; import java.io.FileWriter; import java.io.IOException; import java.io.OutputStreamWriter; import java.io.RandomAccessFile; import java.text.SimpleDateFormat; import java.util.Date; import android.annotation.SuppressLint; import android.os.Environment; /** * 日志输出类,输出日志至文件中 * * @author yzy * */ public class LogUtils { public static String LOG_PATH = ""; public static String LOG_NAME = "/debug.log"; private static String INFO = "info"; private static String DEBUG = "debug"; private static String WARN = "warn"; private static String VERBOSE = "verbose"; private static String ERROR = "error"; private static final boolean isDebug = true ; static { if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){ LOG_PATH = Environment.getExternalStorageDirectory() + "/LogUtils" + "/.log" ; }else{ LOG_PATH = "/LogUtils" + "/.log" ; } } /** * 初始化保存日志的文件 * @param path * @param name */ public static void init(String path,String name){ LOG_PATH = path ; LOG_NAME = name ; } public static void i(String content) { saveLog(INFO, content); } public static void v(String content) { saveLog(VERBOSE, content); } public static void d(String content) { saveLog(DEBUG, content); } public static void e(String content) { saveLog(ERROR, content); } public static void w(String content) { saveLog(WARN, content); } @SuppressLint("SimpleDateFormat") public static void saveLog(String type, String content) { if(isDebug){//当当前是debug时,才进入保存日志操作 appendToFile_Third(LOG_PATH + LOG_NAME, new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS").format(new Date( System.currentTimeMillis())) + "(" + type + "):" + content + "\r\n"); } } /** * 第一种方式追加文本至文件中(随机文件流追加) * * @param filePath * @param content */ public static void appendToFile_One(String filePath, String content) { RandomAccessFile ranFile = null; try { File file = new File(filePath); if (!file.exists()) { file.getParentFile().mkdirs(); file.createNewFile(); } ranFile = new RandomAccessFile(file, "rw"); long fileLength = ranFile.length();// 获取文件文本的长度 ranFile.seek(fileLength); // 设置游标至文件的尾部 ranFile.writeBytes(content); } catch (IOException e) { e.printStackTrace(); } finally { try { if (ranFile != null) { ranFile.close(); } } catch (IOException e) { e.printStackTrace(); } } } /** * 第二种方式追加文本至文件中(BufferedWriter追加) * * @param filePath * @param content */ public static void appendToFile_Two(String filePath, String content) { BufferedWriter bufferedWriter = null; try { File file = new File(filePath); if (!file.exists()) { file.getParentFile().mkdirs(); file.createNewFile(); } bufferedWriter = new BufferedWriter(new OutputStreamWriter( new FileOutputStream(file))); bufferedWriter.write(content); } catch (IOException e) { e.printStackTrace(); } finally { if (bufferedWriter != null) { try { bufferedWriter.close(); } catch (IOException e) { e.printStackTrace(); } } } } /** * 第三种方式追加文本至文件中(BufferedWriter追加) * * @param filePath * @param content */ public static void appendToFile_Third(String filePath, String content) { FileWriter fileWriter = null; try { File file = new File(filePath); if (!file.exists()) { fil a952 e.getParentFile().mkdirs(); file.createNewFile(); } fileWriter = new FileWriter(file, true);// true表示附加 fileWriter.append(content); } catch (IOException e) { e.printStackTrace(); } finally { if (fileWriter != null) { try { fileWriter.close(); } catch (IOException e) { e.printStackTrace(); } } } } }
相关文章推荐
- 关于android手机开发中支持不同分辨率的总结
- android录音时弹出权限选择框影响录音动画显示问题
- Android自定义控件开发实战之实现ListView下拉刷新实例代码
- 使用Android Studio应用打包+代码混淆
- Android录音权限被禁解决方案
- Android Studio 2.1 Beta Fetch failed fatal: Could not read from remote repository
- Android icons集合
- android 自定义相机
- android 自定义ImageView实现图片手势滑动,多点触摸放大缩小效果
- 【Android Demo】通过WebService获取今日天气情况
- 浅析Android手机卫士保存手机安全号码
- android fragment生命周期应用
- Android动画效果translate、scale、alpha、rotate详解
- Android-UnitTest
- Android studio 快捷键
- 2.3 Android进程间通信(IPC)----Server和Client获得Service Manager远程接口
- Android应用开发之所有动画使用详解
- 《ArcGIS Runtime SDK for Android开发笔记》——(12)、自定义方式加载Bundle格式缓存数据
- Android开发时提示非法字符的解决方法
- 一套效果图适配(Android和IOS)全尺寸和标注规范-(一)(750x1334)