如何在我们的android程序中保存日志到本地,最近项目中也有这样的需求,为了达到定期检查app的运行情况和排错任务,我选择了使用microlog4android的工具来实现。
项目结构:
1.下载https://code.google.com/p/microlog4android/downloads/list(要翻墙)
2.添加microlog.properties到项目assets下
# This is a simple Microlog configuration file
microlog.level=DEBUG
microlog.appender=LogCatAppender;MyFileAppender
microlog.formatter=PatternFormatter
microlog.formatter.PatternFormatter.pattern=%c [%P] %m %T
3.添加权限<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
4.开始进入正题了,我的demo代码示例:
package com.example.micrologdemo;
import android.app.Activity;
import android.os.Bundle;
import com.example.micrologdemo.appender.MyFileAppender;
import com.google.code.microlog4android.Logger;
import com.google.code.microlog4android.LoggerFactory;
import com.google.code.microlog4android.config.PropertyConfigurator;
import com.google.code.microlog4android.format.PatternFormatter;
/**
*
* @author jan
*/
public class MainActivity extends Activity {
//创建Logger对象
private static final Logger log = LoggerFactory
.getLogger(MainActivity.class);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//加载assets下的properties文件
PropertyConfigurator.getConfigurator(this).configure();
//选择记录类型
log.addAppender(new MyFileAppender());
final MyFileAppender mfa = (MyFileAppender) log.getAppender(1);
mfa.setAppend(true);//是否追加
mfa.setFileName("test_local.log");//生成的日志名称
PatternFormatter formatter = new PatternFormatter();
formatter.setPattern("%r %c{1} [%P] %m %T");//%d{3}
mfa.setFormatter(formatter);
log.info("------onCreate----");//记录内容
log.debug("------onCreate----");
String nullStr = null;
try {
nullStr.equals(" hello nullpointException! ");
} catch (Exception e) {
log.error("发现错误:" + e.getCause(), e);
}
}
@Override
protected void onResume() {
super.onResume();
log.info("------onResume----");
log.debug("------onResume----");
}
@Override
protected void onPause() {
super.onPause();
log.info("------onPause----");
log.debug("------onPause----");
}
@Override
protected void onDestroy() {
super.onDestroy();
log.info("------onDestroy----");
log.debug("------onDestroy----");
}
}
5.运行程序后,在sdcard下会生成一个test_local.log的日志,内容如下
0 MainActivity 20000101 08:39:17 [INFO] ------onCreate----
3 MainActivity 20000101 08:39:17 [DEBUG] ------onCreate----
4 MainActivity 20000101 08:39:17 [ERROR] 发现错误:null java.lang.NullPointerException
16 MainActivity 20000101 08:39:17 [INFO] ------onResume----
17 MainActivity 20000101 08:39:17 [DEBUG] ------onResume----
是不是很棒,而且使用很简单,再做一些封装就可以加入到正式的项目中了。
最后献上demo,需要请自行下载