import android.os.Environment;
import android.util.Log;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.io.Writer;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date; public class LOG { private static final int LEVEL_I = 1; private static final int LEVEL_D = 2; private static final int LEVEL_W = 3; private static final int LEVEL_E = 4; private static final String FILEPATH = "/folderPath"; private static final String FILENAME = "log.txt"; private static DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss"); public static void logD(String msg) {
log(LEVEL_D, msg);
} public static void logI(String msg) {
log(LEVEL_I, msg);
} public static void logW(String msg) {
log(LEVEL_W, msg);
} public static void logE(String msg) {
log(LEVEL_E, msg);
} public static void logE(Throwable ex) {
if (!AppConstants.DEBUG) {
return;
}
Writer writer = new StringWriter();
PrintWriter printWriter = new PrintWriter(writer);
ex.printStackTrace(printWriter);
Throwable cause = ex.getCause();
while (cause != null) {
cause.printStackTrace(printWriter);
cause = cause.getCause();
}
printWriter.close();
String result = writer.toString();
final Throwable t = AppConstants.DEBUG ? new Throwable() : null;
final StackTraceElement[] elements = t != null ? t.getStackTrace() : null;
String callerClassName = t != null ? elements[2].getClassName() : "N/A";
int pos = callerClassName.lastIndexOf('.');
if (pos >= 0) {
callerClassName = callerClassName.substring(pos + 1);
}
final String tag = callerClassName;
Log.e(tag, result);
try {
write(tag, result);
} catch (IOException e) {
e.printStackTrace();
}
} private static void log(int level, String msg) {
if (!AppConstants.DEBUG) {
return;
}
final Throwable t = AppConstants.DEBUG ? new Throwable() : null;
final StackTraceElement[] elements = t != null ? t.getStackTrace() : null;
String callerClassName = t != null ? elements[2].getClassName() : "N/A";
String callerMethodName = t != null ? elements[2].getMethodName() : "N/A";
int pos = callerClassName.lastIndexOf('.');
if (pos >= 0) {
callerClassName = callerClassName.substring(pos + 1);
}
final String tag = callerClassName;
final StringBuffer buf = new StringBuffer();
buf.append("[").append(callerMethodName).append("] ").append(msg); switch (level) {
case LEVEL_I:
Log.i(tag, buf.toString());
break;
case LEVEL_D:
Log.d(tag, buf.toString());
break;
case LEVEL_W:
Log.w(tag, buf.toString());
break;
case LEVEL_E:
Log.e(tag, buf.toString());
break;
default:
break;
}
try {
write(tag, buf.toString());
} catch (IOException e) {
e.printStackTrace();
}
} private static void write(String tag, String log) throws IOException {
String time = formatter.format(new Date(System.currentTimeMillis()));
String logger = time + ">>>>>" + tag + ">>>>>" + ">>>>>" + log + "\n\n";
if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
File dir = Environment.getExternalStorageDirectory();
File file = new File(dir, FILEPATH);
if (!file.exists()) {
file.mkdirs();
}
FileOutputStream fos = new FileOutputStream(file + "/" + FILENAME, true);
fos.write(logger.getBytes());
fos.close();
}
}
}

Android sd卡log日志的更多相关文章

  1. Android SD卡创建文件和文件夹失败

    原文:Android SD卡创建文件和文件夹失败 功能需要,尝试在本地sd卡上创建文件和文件夹的时候,报错,程序崩溃. 一般情况下,是忘记给予sd卡的读写权限.但是这里面权限已经给了,还是报错. 在网 ...

  2. imx6 android SD卡启动

    工作中需要将imx6的android系统从SD卡启动,所以就分析了MfgTool中的脚本,分析android的分区情况,并尝试自己操作,竟然成功了,记录于此. 参考文档 http://www.kanc ...

  3. Android SD卡存储

    原创文章,转载请注明出处:http://www.cnblogs.com/baipengzhan/p/Android_SDcard_store.html 一 概念 SD卡存储空间比较大,当需要存取较大的 ...

  4. Android SD卡读写

    package com.jredu.zuiyou.activity; import android.os.Bundle;import android.os.Environment;import and ...

  5. Android——SD卡工具类——SDCardUtils.java

    package com.xdsjs.save.utils; /** * SD卡相关的辅助类 * Created by xdsjs on 2015/10/13. */ import java.io.Fi ...

  6. Android SD卡上文件

    1. 得到存储设备的目录:/SDCARD(一般情况下) SDPATH=Environment.getExternalStorageDirectory()+"/"; 2. 判断SD卡 ...

  7. Android中对Log日志文件的分析[转]

    一,Bug出现了, 需要“干掉”它 bug一听挺吓人的,但是只要你懂了,android里的bug是很好解决的,因为android里提供了LOG机制,具体的底层代码,以后在来分析,只要你会看bug, a ...

  8. Android抓取log日志过滤

    前提:Android SDK已安装并配置环境变量 1.手机USB调试模式打开,连接PC 2.cmd窗口,执行adb logcat >log.log   // 输出日志到一个log文件 或者执行a ...

  9. Android Studio的Log日志调试

    本人菜鸟一枚,极大发挥了搜索的功能.现记录一番,以备后患. 用断点真的很烦,因为之前写linux的时候,就是用最蠢但是也是挺有帮助的printf()来进行调试. 其实用Log输出日志的原理也是差不多的 ...

随机推荐

  1. tftp + bras

    Ubuntu 12.04 网卡设置 开发板ip时192.168.0.2,设置的服务ip是192.168.0.1 因此在主机上/etc/network/interfaces添加如下内容 auto eth ...

  2. python 读取csv文件

    python中有一个读写csv文件的包,直接import csv即可 新建test.csv 1.写 import csv with open("test.csv","w& ...

  3. nodejs包管理工具npm

    用Node.js安装模块 在某个项目中单独安装的时候,npm会下载所有的文件到你项目中的一个叫做node_modules的文件夹内 全局模块会被安装到{prefix}/lib/node_modules ...

  4. anaconda-ks.cfg详解

    https://blog.csdn.net/whyhonest/article/details/7555229

  5. python带参装饰器的改良版

    简单点就是这种 def deco2(param=1): def _deco2(fun): def __deco2(*args, **kwargs): print (param) fun(*args, ...

  6. centos 上不了网了

    昨天还用的好好的,今天就上不了网了,郁闷,不过,正好是一次学习linux网络配置的好机会,这会已经把它折腾好了,此文就是在linux下面的浏览器中写的! 先检查一下虚拟机中的网络设置是否正常,由于我的 ...

  7. JavaScript-this理解

    javascript this可以绑定到:全局对象,自己定义的对象,用构造函数生成的对象,通过call或者apply更改绑定的对象    1.全局对象  function globalTest(nam ...

  8. 【GIS】Cesium1.49编译

    1.npm install 2.npm install --save-dev gulp 3.gulp default 4.npm run build 5.npm start 遇到问题 1.gulp不好 ...

  9. 使用 redis “捕捉” “用户登录过期” 事件

    实现原理及步骤: 1)登录时,计算登录过期时间,以分钟为单位作key(例如:sign_timeout_201705212233),value方面自己发挥,需要什么数据就拼什么数据进去,只是要注意,一定 ...

  10. 【代码审计】eduaskcms_v1.0.7前台存储型XSS漏洞分析

      0x00 环境准备 eduaskcms官网:https://www.eduaskcms.xin 网站源码版本:eduaskcms-1.0.7 程序源码下载:https://www.eduaskcm ...