Android Log打印保存到文件中
2018-01-06 11:01
274 查看
public class LogToFile extends HandlerThread{ private static Handler mHandler; private static LogToFile mLogToFile; private static final String LOG_THREAD = "LOG_THREAD"; private static final String TAG = "LogToFile"; private LogToFile(String name) { super(name); } //在application初始化 LogToFile.init(); public static void init() { if (mLogToFile == null) { mLogToFile = new LogToFile(LOG_THREAD); mLogToFile.start(); mHandler = new Handler(mLogToFile.getLooper()) { @Override public void handleMessage(Message msg) { super.handleMessage(msg); if (msg != null) {//子线程执行保存文件操作 Bundle data = msg.getData(); String tag = data.getString("TAG", "tag is null"); String message = data.getString("MESSAGE", "message is null"); saveLogFile(tag, message); } } }; } } //在程序退出时调用 public static void deInit() { if (mLogToFile != null) { mHandler.removeCallbacksAndMessages(null); mLogToFile.quit(); mLogToFile = null; mHandler=null; } } public static void v(String tag, String msg) { if (BuildConfig.DEBUG) { Log.d(tag, msg); } toChildThread(tag, msg); } public static void d(String tag, String msg) { if (BuildConfig.DEBUG) { Log.d(tag, msg); } toChildThread(tag, msg); } public static void d(String msg) { if (BuildConfig.DEBUG) { Log.d(TAG, msg); } toChildThread(TAG, msg); } public static void i(String tag, String msg) { if (BuildConfig.DEBUG) { Log.i(tag, msg); } toChildThread(tag, msg); } public static void i(String msg) { if (BuildConfig.DEBUG) { Log.i(TAG, msg); } toChildThread(TAG, msg); } public static void w(String tag, String msg) { if (BuildConfig.DEBUG) { Log.w(tag, msg); } toChildThread(tag, msg); } public static void e(String tag, String msg) { if (BuildConfig.DEBUG) { Log.e(tag, msg); } toChildThread(tag, msg); } public static void e(String msg) { if (BuildConfig.DEBUG) { Log.e(TAG, msg); } toChildThread(TAG, msg); } private static void toChildThread(String tag, String message) { if (!BuildConfig.DEBUG) {//release版本不保存 return; } if (mHandler != null && !TextUtils.isEmpty(message)) { Message obtain = Message.obtain(); Bundle bundle = new Bundle(); if (TextUtils.isEmpty(tag)) { tag = TAG; } bundle.putString("TAG", tag); bundle.putString("MESSAGE", message); obtain.setData(bundle); mHandler.sendMessage(obtain); } } private static final int LOG_FILE_SIZE_MAX = 20 * 1024 * 1024; private static final String PATH = "/sdcard/"; private static final String NAME = "MyLog.txt"; private static SimpleDateFormat DateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss "); private static void saveLogFile(String tag, String message) {// if (TextUtils.isEmpty(tag)) { tag = "--Tag null--"; } FileOutputStream fileOutputStream = null; try { File file = new File(PATH, NAME); if (file == null || !file.exists()) { file.getParentFile().mkdirs(); file.createNewFile(); } fileOutputStream = new FileOutputStream(file, true); long size = fileOutputStream.getChannel().size(); if (size > LOG_FILE_SIZE_MAX) {//超过20m,删除 fileOutputStream.close(); file.delete(); return; } String result = DateFormat.format(new Date()) + "/" + tag + "=====>>[" + message + "]" + "\n"; fileOutputStream.write(result.getBytes()); fileOutputStream.flush(); } catch (IOException e) { e.printStackTrace(); } finally { try { if (fileOutputStream != null) { fileOutputStream.close(); } } catch (IOException e) { e.printStackTrace(); } } } }
相关文章推荐
- Android将应用log信息保存文件
- Android的log保存到文件上查看
- Android的log保存到文件上查看
- Android将应用log信息保存文件
- android将log保存到文件
- Android将应用log信息保存文件
- Android将应用log信息保存文件
- android 6.0 logcat机制(二)logcat从logd中获取log保存到文件中
- makefile&Android mk文件中打印log
- Android将应用log信息保存文件
- android调试输出log打印信息到本地文件
- [Android 调试] Android的log保存到文件上查看
- Android项目中异常捕获及对应Log日志文件保存
- Android将应用log信息保存文件
- Android将应用log信息保存文件
- Android将应用log信息保存文件
- Android将应用log信息保存文件
- 02_JNI中Java代码调用C代码,Android中使用log库打印日志,javah命令的使用,Android.mk文件的编写,交叉编译
- Android将应用log信息保存文件
- Android的log保存到文件上查看