android logger 把日志保存到本地
来源:互联网 发布:淘宝售前客服议价技巧 编辑:程序博客网 时间:2024/04/28 14:05
<uses-permission Android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
实现工具类LogcatFileManager,代码如下:
package com.ytee.logutil;
import Java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.text.SimpleDateFormat;
import java.util.Date;
import android.content.Context;
import android.os.Environment;
public class LogcatFileManager
{
private static LogcatFileManager INSTANCE = null;
private static String PATH_LOGCAT;
private LogDumper mLogDumper = null;
private int mPId;
private SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("yyyyMMdd");
private SimpleDateFormat simpleDateFormat2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
public static LogcatFileManager getInstance()
{
if (INSTANCE == null)
{
INSTANCE = new LogcatFileManager();
}
return INSTANCE;
}
private LogcatFileManager()
{
mPId = android.os.Process.myPid();
}
public void startLogcatManager(Context context)
{
String folderPath = null;
if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED))
{
folderPath = Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator + "MMF-Logcat";
}
else
{
folderPath = context.getFilesDir().getAbsolutePath() + File.separator + "MMF-Logcat";
}
LogcatFileManager.getInstance().start(folderPath);
}
public void stopLogcatManager()
{
LogcatFileManager.getInstance().stop();
}
private void setFolderPath(String folderPath)
{
File folder = new File(folderPath);
if (!folder.exists())
{
folder.mkdirs();
}
if (!folder.isDirectory())
{
throw new IllegalArgumentException("The logcat folder path is not a directory: " + folderPath);
}
PATH_LOGCAT = folderPath.endsWith("/") ? folderPath : folderPath + "/";
LogUtils.d(PATH_LOGCAT);
}
public void start(String saveDirectoy)
{
setFolderPath(saveDirectoy);
if (mLogDumper == null)
{
mLogDumper = new LogDumper(String.valueOf(mPId), PATH_LOGCAT);
}
mLogDumper.start();
}
public void stop()
{
if (mLogDumper != null)
{
mLogDumper.stopLogs();
mLogDumper = null;
}
}
private class LogDumper extends Thread
{
private Process logcatProc;
private BufferedReader mReader = null;
private boolean mRunning = true;
String cmds = null;
private String mPID;
private FileOutputStream out = null;
public LogDumper(String pid, String dir)
{
mPID = pid;
try
{
out = new FileOutputStream(new File(dir, "logcat-" + simpleDateFormat1.format(new Date()) + ".log"), true);
}
catch (FileNotFoundException e)
{
e.printStackTrace();
}
/**
* * * log level:*:v , *:d , *:w , *:e , *:f , *:s * * Show the
* current mPID process level of E and W log. * *
*/
// cmds = "logcat *:e *:w | grep \"(" + mPID + ")\"";
cmds = "logcat *:e *:w | grep \"(" + mPID + ")\"";
}
public void stopLogs()
{
mRunning = false;
}
@Override
public void run()
{
try
{
logcatProc = Runtime.getRuntime().exec(cmds);
mReader = new BufferedReader(new InputStreamReader(logcatProc.getInputStream()), 1024);
String line = null;
while (mRunning && (line = mReader.readLine()) != null)
{
if (!mRunning)
{
break;
}
if (line.length() == 0)
{
continue;
}
if (out != null && line.contains(mPID))
{
out.write((simpleDateFormat2.format(new Date()) + " " + line + "\n").getBytes());
}
}
}
catch (IOException e)
{
e.printStackTrace();
}
finally
{
if (logcatProc != null)
{
logcatProc.destroy();
logcatProc = null;
}
if (mReader != null)
{
try
{
mReader.close();
mReader = null;
}
catch (IOException e)
{
e.printStackTrace();
}
}
if (out != null)
{
try
{
out.close();
}
catch (IOException e)
{
e.printStackTrace();
}
out = null;
}
}
}
}
}
然后在应用启动和退出时关闭管理器就行
- android logger 把日志保存到本地
- android log 的工具类 ,把日志保存到本地
- android:Log日志保存到本地
- Android 日志保存到本地---CscSDK
- 把数据保存到本地
- Android长按imageview把图片保存到本地
- Android长按imageview把图片保存到本地
- log4j保存日志到本地
- Android 异常崩溃日志,捕捉并保存到本地
- Android全局捕获crash并保存日志到本地
- android应用调试之如何保存logcat日志到本地
- android应用调试之如何保存logcat日志到本地
- cocos2dx 如何把文件保存到本地
- 387_把Bitmap保存到本地
- java保存日志到本地文本文件
- Android 保存图片到本地
- android保存图片到本地
- Android保存图片到本地
- Linux XShell下乱码的解决方法
- 嵌入式开发4418开发板平台初体验
- bootstrap-排版
- Apache与Nginx的优缺点比较
- DrawTextEx
- android logger 把日志保存到本地
- java web 解决当get 请求时 中文乱码问题
- iOS 为 self.view 设置背景图片被切割的解决方案
- quagga
- 动态多选弹框,可自己设定最多选择几项
- CentOS设置服务开机启动的两种方法
- linux线程系列(4)线程终止
- UITextView添加placeholder属性
- Spring事务管理