Android Log 日志添加保存到本地并读取,下面是效果图:

Android Log日志保存到本地并读取_第1张图片

 

GitHub 下载地址:https://github.com/wuqingsen/LogUtils

csdn 下载地址:https://download.csdn.net/download/wuqingsen1/11925706

下面添加了三个工具类,分别是变量存储工具类、Log 日志存储并读取、Log 日志添加;

 

LogVariateUtils 存储变量存储,里面有日志文件的大小等常用变量;
/** * Name: 吴庆森 * Date: 2019/10/23 * Mailbox: 1243411677@qq.com * Describe:变量存储 */public class LogVariateUtils {    private boolean SHOW_LOG = true;//是否在logcat中打印log,true打印,false不打印    private boolean WRITE_LOG = true;//是否在文件中记录,true记录,false不记录    private long fileSize = 100000;//日志文件的大小,默认0.1M    private String TAG = "TLOG";//Logcat中显示的tag    private static LogVariateUtils instance;    public static LogVariateUtils getInstance() {        if (instance == null) {            synchronized (LogVariateUtils.class) {                if (instance == null) {                    instance = new LogVariateUtils();                }            }        }        return instance;    }    public LogVariateUtils isShowLog(boolean isShowLog) {        SHOW_LOG = isShowLog;        return this;    }    public boolean getIsShowLog() {        return SHOW_LOG;    }    public LogVariateUtils isWriteLog(boolean isWriteLog) {        WRITE_LOG = isWriteLog;        return this;    }    public boolean getIsWriteLog() {        return WRITE_LOG;    }    public LogVariateUtils fileSize(long size) {        this.fileSize = size;        return this;    }    public long getFileSize() {        return this.fileSize;    }    public LogVariateUtils tag(String tag) {        TAG = tag;        return this;    }    public String getTag() {        return TAG;    }}

 

LogFileUtils 写入文件以及读出文件;
import android.os.Environment;import java.io.File;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;import java.text.SimpleDateFormat;import java.util.Date;/** * Name: 吴庆森 * Date: 2019/10/23 * Mailbox: 1243411677@qq.com * Describe:存储日志 */public class LogFileUtils {    private static Object obj = new Object();    //文件名称    private static String fileName = "operationLog-" + "Log日志" + ".log";    //文件路径    private static String filePath = Environment.getExternalStorageDirectory().getAbsolutePath() + "/Log日志/";    /**     * 写入文件     *     * @param msg     */    public static void writeLogFile(String msg) {        synchronized (obj) {            try {                createFile();                File file = new File(filePath + fileName);                FileWriter fw = null;                if (file.exists()) {                    if (file.length() > LogVariateUtils.getInstance().getFileSize())                        fw = new FileWriter(file, false);                    else                        fw = new FileWriter(file, true);                } else                    fw = new FileWriter(file, false);                Date d = new Date();                SimpleDateFormat s = new SimpleDateFormat("MM-dd HH:mm:ss");                String dateStr = s.format(d);                fw.write(String.format("[%s] %s", dateStr, msg));                fw.write(13);                fw.write(10);                fw.flush();                fw.close();            } catch (Throwable ex) {                ex.printStackTrace();            }        }    }    /**     * 取出文件     *     * @return     */    public static String readLogText() {        FileReader fr = null;        try {            File file = new File(filePath + fileName);            if (!file.exists()) {                return "";            }            long n = LogVariateUtils.getInstance().getFileSize();            long len = file.length();            long skip = len - n;            fr = new FileReader(file);            fr.skip(Math.max(0, skip));            char[] cs = new char[(int) Math.min(len, n)];            fr.read(cs);            return new String(cs).trim();        } catch (Throwable ex) {            ex.printStackTrace();        } finally {            try {                if (fr != null)                    fr.close();            } catch (IOException e) {                e.printStackTrace();            }        }        return "";    }    //创建文件夹    public static void createFile() {        File file = new File(filePath);        if (!file.exists()) {            file.mkdir();        }    }}

 

LogUtils 打印日志;
/** * Name: 吴庆森 * Date: 2019/10/23 * Mailbox: 1243411677@qq.com * Describe:打印日志并存储日志记录 */public class LogUtils {    public static void i(String title, String msg) {        String str = formatString(title, msg);        if (LogVariateUtils.getInstance().getIsShowLog())            Log.i(LogVariateUtils.getInstance().getTag(), str);        if (LogVariateUtils.getInstance().getIsWriteLog())            LogFileUtils.writeLogFile(str);    }    public static void w(String title, String msg) {        String str = formatString(title, msg);        if (LogVariateUtils.getInstance().getIsShowLog())            Log.w(LogVariateUtils.getInstance().getTag(), str);        if (LogVariateUtils.getInstance().getIsWriteLog())            LogFileUtils.writeLogFile(str);    }    public static void e(String title, String msg) {        String str = formatString(title, msg);        if (LogVariateUtils.getInstance().getIsShowLog())            Log.e(LogVariateUtils.getInstance().getTag(), str);        if (LogVariateUtils.getInstance().getIsWriteLog())            LogFileUtils.writeLogFile(str);    }    public static String formatString(String title, String msg) {        if (title == null) {            return msg == null ? "" : msg;        }        return String.format("[%s]: %s", title, msg == null ? "" : msg);    }}

 

 

工具类添加完毕后,在 MainActivity 中添加如下代码,以便使用工具类:

    @Override    public void onClick(View view) {        switch (view.getId()) {            case R.id.btn_log:                String title = titleEdit.getText().toString().trim();                String log = logEdit.getText().toString().trim();                //添加日志                LogUtils.i(title, log);                Toast.makeText(MainActivity.this, "添加日志成功", Toast.LENGTH_SHORT).show();                break;            case R.id.btn_check:                //取出日志                tv_log.setText(LogFileUtils.readLogText());                break;        }    }

 

这样就可以完成 Log 日志保存到本地以及读取;

 

更多相关文章

  1. Android Rom签名文件的生成与签名
  2. Android资源文件xml的编写
  3. Android 工程中各种文件的介绍
  4. 在Android中把内容写到XML文件中
  5. 【Android】volley网络框架的文件下载
  6. android 对文件的操作模式
  7. Android从网上下载文件

随机推荐

  1. TextView中的文字添加阴影效果及Style的
  2. 27:活用Android的Message Queue(2/3)
  3. android中json的序列化与反序列化
  4. Android之Service设置android:process作
  5. 说说 Android(安卓)的常见 UI 控件
  6. Android深入浅出之Audio 第一部分 AudioT
  7. Android(安卓)应用中十大常见 UX 错误
  8. Android测试之Monkey
  9. Android(安卓)众多的布局属性详解[转]
  10. ubuntu 使用adb shell命令识别android设