一般android程序为了debug方便,都会加上日志和程序检测。这里备份下代码。
github【 https://github.com/cstriker1407/android/tree/master/BaseApp 】
CONTENTS
1)程序异常检测
1)声明一个类实现Thread.UncaughtExceptionHandler接口。
public class ThreadCrashHandler implements Thread.UncaughtExceptionHandler { private static final String tag = "ThreadCrashHandler"; private static final int MAX_STREAM_LENGTH = 1024; private String threadName; public ThreadCrashHandler(String threadName) { super(); this.threadName = threadName; } @Override public void uncaughtException(Thread thread, Throwable ex) { Log.e(tag, String.format("Thread:%s is crashed", threadName)); if (null == ex) { return; } Log.e(tag, ex.toString()); ByteArrayOutputStream stream = new ByteArrayOutputStream(MAX_STREAM_LENGTH); PrintStream ps = new PrintStream(stream); ex.printStackTrace(ps); ps.flush(); ps.close(); Log.e(tag, stream.toString()); try { stream.close(); } catch (IOException e) { e.printStackTrace(); } } @Override public String toString() { return threadName + super.toString(); } }
2)在自定义的APP里面使用它。
public class BaseApp extends Application { @Override public void onCreate() { super.onCreate(); Thread.setDefaultUncaughtExceptionHandler(new ThreadCrashHandler("BaseApp")); } }
备注:https://code.google.com/p/android-logging-log4j/downloads/list
1)关于程序异常检测,网上有很多资料,基本上都是使用这种方法。
2)其他参考【 http://blog.csdn.net/liuhe688/article/details/6584143 】【 http://blog.csdn.net/zkw12358/article/details/11097649 】
2)日志写入sd卡–Log4J方式
android可以通过log4j的开源库来写入日志,不过需要另外一个开源库【 android-logging-log4j 】的配合。
1)下载开源库。
下载Log4J:【 http://logging.apache.org/log4j/1.2/download.html 】
下载android-logging-log4j:【 https://code.google.com/p/android-logging-log4j/downloads/list 】
2)将开源库放到工程的libs目录下。
3)代码实现。
public class SDLog { private static final Logger log = Logger.getLogger(SDLog.class); private static boolean bLogToFile = false; public static void initLog() { final LogConfigurator logConfigurator = new LogConfigurator(); logConfigurator.setFileName("/mnt/sdcard/sss.log"); /* * http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/PatternLayout.html */ logConfigurator.setLogCatPattern("%m%n"); logConfigurator.setFilePattern("%d - [%p] - %m%n"); logConfigurator.setRootLevel(Level.DEBUG); logConfigurator.setLevel("org.apache", Level.DEBUG); try { logConfigurator.configure(); } catch (Exception e) { bLogToFile = false; e.printStackTrace(); } bLogToFile = true; } private static String logFmt(String tag,String msg) { return String.format("%s==>%s", tag, msg); } public static int d(String tag, String msg) { if (bLogToFile) { log.debug(logFmt(tag,msg)); }else { Log.d(tag, msg); } return 1; } public static int e(String tag, String msg) { if (bLogToFile) { log.error(logFmt(tag,msg)); } else { Log.e(tag, msg); } return 1; } }
4)初始化及使用方法。
public class BaseApp extends Application { @Override public void onCreate() { super.onCreate(); SDLog.initLog(); SDLog.d("", "hello world"); } }
备注:
1)日志的内容形式和Log4J的差不多,如果要定制可以参考【 http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/PatternLayout.html 】
2)我的习惯是在Application里面初始化日志工具类。
3)更多的参考可以搜索网上资源或者查看android-logging-log4j的官网,上面有详细的介绍。
3)日志写入SD卡–microlog4android方式
另一种写入sd卡的方法使用microlog4android【 http://code.google.com/p/microlog4android/downloads/list 】。
备注:
1)网上有很多的关于microlog4android的介绍,这里没有代码备份,后续需要补上。
发表评论