LogUtils.zip

  • SRaibnow
    了解作者
  • Java
    开发工具
  • 1KB
    文件大小
  • zip
    文件格式
  • 0
    收藏次数
  • 1 积分
    下载积分
  • 1
    下载次数
  • 2019-03-27 17:27
    上传日期
日志工具类,包含写入日志到APP换成目录文件中
LogUtils.zip
  • LogUtils.java
    5.6KB
内容介绍
package com.srainbow.uhfproject.util; import android.util.Log; import com.srainbow.uhfproject.base.BaseApplication; import com.srainbow.uhfproject.bean.LogBean; import com.srainbow.uhfproject.data.API; import com.srainbow.uhfproject.data.StaticFinalPool; import java.io.File; import java.io.IOException; import java.io.RandomAccessFile; import java.util.ArrayList; import java.util.Collection; import java.util.List; import java.util.concurrent.ConcurrentLinkedDeque; import io.reactivex.Observable; import io.reactivex.ObservableEmitter; import io.reactivex.ObservableOnSubscribe; import io.reactivex.Observer; import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.disposables.Disposable; import io.reactivex.schedulers.Schedulers; /** * Log日志工具类 */ public class LogUtils { private volatile static LogUtils instance; private ConcurrentLinkedDeque<LogBean> concurrentLinkedDeque; private boolean isWriting; public LogUtils() { concurrentLinkedDeque = new ConcurrentLinkedDeque<>(); isWriting = false; } public static LogUtils getInstance() { if (instance == null) { synchronized (LogUtils.class) { if (instance == null) { instance = new LogUtils(); } } } return instance; } //打印e级别的Log日志 public static void e(String tag, String msg) { if (API.IS_TEST) { Log.e(tag, msg); } } //打印w级别的Log日志 public static void w(String tag, String msg) { if (API.IS_TEST) { Log.w(tag, msg); } } public void writeLog(LogBean bean) { List<LogBean> list = new ArrayList<>(); list.add(bean); writeLogList(list); } public void writeLog(String content) { writeLog(new LogBean(content)); } public synchronized void writeLogList(Collection<LogBean> list) { LogUtils.w("20190326", "输出列表 - " + list.size() + " " + isWriting); concurrentLinkedDeque.addAll(list); if (isWriting) return; writeToFile(); } private void writeToFile() { if (isWriting || concurrentLinkedDeque.isEmpty()) { return; } isWriting = true; final List<LogBean> list = new ArrayList<>(concurrentLinkedDeque); concurrentLinkedDeque.clear(); LogUtils.w("20190326", list.size() + " 清空缓存,写入"); Observable .create(new ObservableOnSubscribe<Integer>() { @Override public void subscribe(ObservableEmitter<Integer> emitter) throws Exception { writeLog(list); emitter.onNext(1); } }) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Observer<Integer>() { @Override public void onSubscribe(Disposable d) { } @Override public void onNext(Integer aVoid) { isWriting = false; writeToFile(); } @Override public void onError(Throwable e) { LogUtils.w("20190326", "onError = " + e.getMessage()); isWriting = false; } @Override public void onComplete() { } }); } private void writeLog(List<LogBean> list) { if (list.isEmpty()) return; File root = BaseApplication.getContext().getExternalCacheDir(); if (root == null) { root = BaseApplication.getContext().getCacheDir(); } String fileName = root.getAbsolutePath() + File.separator + list.get(0).getTime().substring(0, 10) + ".txt"; File file = new File(fileName); try { if (!file.exists()) { file.createNewFile(); } RandomAccessFile randomAccessFile = new RandomAccessFile(file, "rw"); long len = randomAccessFile.length(); randomAccessFile.seek(len); StringBuilder builder = new StringBuilder(); for (LogBean bean : list) { if (bean.getType() == StaticFinalPool.IntegerPool.TYPE_LOG_TXT) { //普通文本 builder.append(bean.getTime()); builder.append(" "); builder.append(bean.getContent()); builder.append("\r\n"); } else if (bean.getType() == StaticFinalPool.IntegerPool.TYPE_LOG_LINE) { //换行 builder.append("\r\n"); } else if (bean.getType() == StaticFinalPool.IntegerPool.TYPE_LOG_INDENT) { //缩进 builder.append(" "); builder.append(bean.getContent()); builder.append("\r\n"); } } LogUtils.w("20190326", "写入内容 = " + builder.toString()); randomAccessFile.write(builder.toString().getBytes()); randomAccessFile.close(); } catch (IOException e) { e.printStackTrace(); LogUtils.w("20190326", "写入出错 = " + e.getMessage()); } } }
评论
    相关推荐
    • android日志工具类
      一个Android端的日志轻量工具类,日志输出,写入文件等功能。
    • 强大的Android日志管理器LogUtils.zip
      LogUtils是一个强大的Android日志管理器,支持对象、List、Map、数组等输出。具有以下特点:支持直接打印数据集合,如List、Set、Map、数组等全局配置log输出个性化设置Tag准确显示调用方法、行,快速定位所在文件位置...
    • android jni开发
      这是我参考别人的文章,来写的第一个android调用jni 的例子。
    • 安卓日志分析崩溃拦截相关-Android日志打印类LogUtils.rar
      Android日志打印类LogUtils.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
    • Android-LogUtils.zip
      Android-LogUtils.zip,更方便易用的android日志管理器,安卓系统是谷歌在2008年设计和制造的。操作系统主要写在爪哇,C和C 的核心组件。它是在linux内核之上构建的,具有安全性优势。
    • Android NDK开发示例
      Android NDK开发示例,用于学习Android的本地开发,对于初学者来说是很好的例子!
    • LogUtils.zip
      android 日志输出,可以写入sd卡,可以记录日志,统一处理,用于定位分析问题,以及输出日志统一处理,方便后期维护与管理!
    • android 公共框架
      通用工具类
    • Android常用工具类
      总结类一些常用的工具类,包括listview的适配器以及holder的封装框架,application的全局设置,还有对常用类的封装,比如LogUtils,IO等等
    • ZxingDemo.rar
      android上使用ZXing识别条形码和二维码,代码简单易懂,相信能帮助读者迅速掌握相关的开发