首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > 移动开发 >

有关问题小结(22)-代码实现logcat保存

2012-12-15 
问题小结(22)--代码实现logcat保存让logcat实时的输出保存到某个目录下,我们基本都知道可以通过adb命令来

问题小结(22)--代码实现logcat保存

让logcat实时的输出保存到某个目录下,我们基本都知道可以通过adb命令来实现,那么怎么通过代码实现呢?这是本篇博文要说的内容。

我这里是把log保存到了sdcard的根目录下,不罗嗦了,上代码。

import java.io.File;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Date;import java.util.List;import android.os.Environment;import android.util.Log;public class WriteLog {private static final String TAG = "Log";// LogWriteprivate String LOG_PATH_SDCARD_DIR; // log file path in sdcardprivate SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss");// log// nameprivate Process process;private static WriteLog mLogDemo = null;private WriteLog() {init();}public static WriteLog getInstance() {if (mLogDemo == null) {mLogDemo = new WriteLog();}return mLogDemo;}public void startLog() {createLog();}public void stopLog() {if (process != null) {process.destroy();}}private void init() {LOG_PATH_SDCARD_DIR = Environment.getExternalStorageDirectory().getAbsolutePath();createLogDir();Log.i(TAG, "Log onCreate");}/** * write the log */public void createLog() {// TODOWriteLogList<String> commandList = new ArrayList<String>();commandList.add("logcat");commandList.add("-f");commandList.add(getLogPath());commandList.add("-v");commandList.add("time");try {process = Runtime.getRuntime().exec(commandList.toArray(new String[commandList.size()]));} catch (Exception e) {Log.e(TAG,e.getMessage(), e);}}/** * the path of the log file *  * @return */public String getLogPath() {createLogDir();String logFileName = sdf.format(new Date()) + ".log";// nameLog.d(TAG, "Log stored in SDcard, the path is:" + LOG_PATH_SDCARD_DIR+ File.separator + logFileName);return LOG_PATH_SDCARD_DIR + File.separator + logFileName;}/** * make the dir */private void createLogDir() {File file;boolean mkOk;if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {file = new File(LOG_PATH_SDCARD_DIR);if (!file.isDirectory()) {mkOk = file.mkdirs();if (!mkOk) {return;}}}}}

使用的是单例模式,使用方法也很简单,如下:

WriteLog log = WriteLog.getInstance();log.startLog();//开始保存log

在你调起以后它就可以实时的去保存log至我们指定的路径,如果需要停止log的保存输出就需要调用stopLog()方法。

热点排行