android 日志存储路径,android:Log日志保存到本地

这个博客介绍了一个用于Android应用的日志记录和保存工具类,它以小时为单位将log信息保存到文件中,方便调试时查看。通过创建LogCatHelper实例并调用start方法,可以启动日志保存功能,日志文件会按照指定格式命名并存储在设备的外部存储目录下。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

大家在开发一个应用进行调试的时候,查看log日志信息是必不可少的,因此log信息的保存是非常有必要的。下面是log日志保存的一个工具类,仅供参考。

package com.dandy.util;

import java.io.BufferedReader;

import java.io.File;

import java.io.FileOutputStream;

import java.io.InputStreamReader;

import java.text.SimpleDateFormat;

import android.annotation.SuppressLint;

import android.content.Context;

import android.os.Environment;

import android.text.TextUtils;

/**

*

* @author Administrator

*

* log打印日志保存,文件的保存以小时为单位

* permission:

*

*/

public class LogCatHelper {

private static LogCatHelper instance = null;

private String dirPath;//保存路径

private int appid;//应用pid

private Thread logThread;

/**

* @param mContext

* @param path log日志保存根目录

* @return

*/

public static LogCatHelper getInstance(Context mContext,String path){

if(instance == null){

instance = new LogCatHelper(mContext,path);

}

return instance;

}

private LogCatHelper(Context mContext,String path) {

appid = android.os.Process.myPid();

if(TextUtils.isEmpty(path)){

dirPath = Environment.getExternalStorageDirectory().getAbsolutePath()

+File.separator+"seeker"+File.separator+mContext.getPackageName();

}else{

dirPath = path;

}

File dir = new File(dirPath);

if(!dir.exists()){

dir.mkdirs();

}

}

/**

* 启动log日志保存

*/

public void start(){

if(logThread == null){

logThread = new Thread(new LogRunnable(appid, dirPath));

}

logThread.start();

}

private static class LogRunnable implements Runnable{

private Process mProcess;

private FileOutputStream fos;

private BufferedReader mReader;

private String cmds;

private String mPid;

public LogRunnable(int pid,String dirPath) {

this.mPid = ""+pid;

try {

File file = new File(dirPath,FormatDate.getFormatDate()+".log");

if(!file.exists()){

file.createNewFile();

}

fos = new FileOutputStream(file,true);

} catch (Exception e) {

e.printStackTrace();

}

cmds = "logcat *:v | grep \"(" + mPid + ")\"";

}

@Override

public void run() {

try {

mProcess = Runtime.getRuntime().exec(cmds);

mReader = new BufferedReader(new InputStreamReader(mProcess.getInputStream()),1024);

String line;

while((line = mReader.readLine()) != null){

if(line.length() == 0){

continue;

}

if(fos != null && line.contains(mPid)){

fos.write((FormatDate.getFormatTime()+""+line+"\r\n").getBytes());

}

}

} catch (Exception e) {

e.printStackTrace();

}finally{

if(mProcess != null){

mProcess.destroy();

mProcess = null;

}

try {

if(mReader != null){

mReader.close();

mReader = null;

}

if(fos != null){

fos.close();

fos = null;

}

} catch (Exception e2) {

e2.printStackTrace();

}

}

}

}

@SuppressLint("SimpleDateFormat")

private static class FormatDate{

public static String getFormatDate(){

SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHH");

return sdf.format(System.currentTimeMillis());

}

public static String getFormatTime(){

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

return sdf.format(System.currentTimeMillis());

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值