在android中,实现输出log内容到sd卡中的文件里面,做法是:

还是相对来说,log4j,算是好用。

1.下载android的log4j的库(的封装)

去:http://code.google.com/p/android-logging-log4j/

下载对应的android-logging-log4j-1.0.3.jar,加到项目中。

2.再去下载所依赖的apache的log4j库

去:http://logging.apache.org/log4j/1.2/download.html

下载1.2系列版本的:log4j-1.2.17.zip

解压得到log4j-1.2.17.jar加到项目中。

3.写测试代码:

package com.test.usb;import java.io.File;import org.apache.http.client.methods.HttpPost;import org.apache.http.entity.ByteArrayEntity;import org.apache.http.impl.client.DefaultHttpClient;import org.apache.log4j.Level;import org.apache.log4j.Logger;import de.mindpipe.android.logging.log4j.LogConfigurator;import android.app.Activity;import android.os.Bundle;import android.os.Environment;import android.util.Log;import android.widget.TextView;public class MainActivity extends Activity{private Logger gLogger;bsit_cardreader reader;TextView txt,txt1,txt2,txt3,txt4,txt5;private static final String TAG = MainActivity.class.getCanonicalName(); public void configLog()    {        final LogConfigurator logConfigurator = new LogConfigurator();                 logConfigurator.setFileName(Environment.getExternalStorageDirectory() + File.separator + "crifanli_log4j.txt");        // Set the root log level        logConfigurator.setRootLevel(Level.DEBUG);        // Set log level of a specific logger        logConfigurator.setLevel("org.apache", Level.ERROR);        logConfigurator.configure();         gLogger = Logger.getLogger(this.getClass());//        gLogger = Logger.getLogger("CrifanLiLog4jTest");            }    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        configLog();        gLogger.debug("test android log to file in sd card using log4j");        txt=(TextView) findViewById(R.id.txt);        txt1=(TextView) findViewById(R.id.txt1);        txt2=(TextView) findViewById(R.id.txt2);        txt3=(TextView) findViewById(R.id.txt3);        txt4=(TextView) findViewById(R.id.txt4);        txt5=(TextView) findViewById(R.id.txt5);        reader = new bsit_cardreader();        int openResult = reader.openreader(this);        txt.setText("MainActivity--reader ="+ openResult);        Log.i(TAG, "---------------4---MainActivity--reader =" + openResult);//7        int bslot = 0 ; //非接触卡通道        byte[] atr = reader.card_poweron(bslot);        Log.i(TAG, "---------------5---MainActivity--atr =" + atr);        txt1.setText("MainActivity--reader ="+ openResult);        byte[] cmd = new byte[5];        cmd[0] = 0x00;        cmd[1] = -124;        cmd[2] = 0x00;         cmd[3] = 0x00;        cmd[4] = 0x08;        Log.i(TAG, "---------------6---MainActivity--cmd =" + cmd[1]);        txt2.setText("MainActivity--cmd ="+ cmd[1]);        byte[] resp= reader.sendapdu(bslot, 5, cmd);              for (int i = 0; i < resp.length; i++) {Log.i(TAG, "------------7-------resp[" + i + "]=" + resp[i]); txt3.setText("------------7-------resp[" + i + "]=" + resp[i]);}        reader.card_poweroff(bslot);                //        byte cmd = (byte) 0x84;//        Log.i(TAG, "---------------6---MainActivity--cmd =" + cmd);    }        public boolean post(byte[] paramArrayOfByte,String http) {         ByteArrayEntity arrayEntity = new ByteArrayEntity(paramArrayOfByte);         arrayEntity.setContentType("application/octet-stream");         HttpPost httpPost = new HttpPost(http);         httpPost.setEntity(arrayEntity);         DefaultHttpClient client = new DefaultHttpClient();         try {             int result=client.execute(httpPost).getStatusLine().getStatusCode();             Log.i(TAG, "post=" + result);             txt4.setText("post=" + result);        } catch (Exception e) {             throw new RuntimeException(e);         }         return false;     }}

即可实现:

(1)可以在/mnt/sdcard中生成对应的crifanli_log4j.txt文件

(2)log输出的内容中,是DEBUG,且对应的是自己的字符串标识符CrifanLiLog4jTest



因此,可以另外多下载一个叫android-logging-log4j的项目,地址在: 
http://code.google.com/p/android-logging-log4j/downloads/list,注意,原本的log4j还是需要的。 

  在AndroidManifest.xml中,增加如下设置: 
 
   然后在程序中如下使用: 

package com.android.myapp;     import java.io.File;       import org.apache.log4j.Level;       import org.apache.log4j.Logger;  import android.app.Application;       import android.os.Environment;       import de.mindpipe.android.logging.log4j.LogConfigurator;      public class MyApplication extends Application {               @Override               public void onCreate() {                       super.onCreate();                       LogConfigurator logConfigurator = new LogConfigurator();                       logConfigurator.setFileName(Environment.getExternalStorageDirectory()                                       + File.separator + "MyApp" + File.separator + "logs"                                       + File.separator + "log4j.txt");                       logConfigurator.setRootLevel(Level.DEBUG);                       logConfigurator.setLevel("org.apache", Level.ERROR);                       logConfigurator.setFilePattern("%d %-5p [%c{2}]-[%L] %m%n");                       logConfigurator.setMaxFileSize(1024 * 1024 * 5);                       logConfigurator.setImmediateFlush(true);                       logConfigurator.configure();                       Logger log = Logger.getLogger(MyApplication.class);                       log.info("My Application Created");               }       }

 现在日志则是以: 
Environment.getExternalStorageDirectory() + File.separator + "MyApp" + File.separator + "logs" + File.separator + "log4j.txt 
   的方式保存了。

更多相关文章

  1. android中下载文件到sdcard和进度条小结
  2. android的一些开源项目
  3. 常用Android快速开发框架
  4. Java和Android(安卓)Http连接程序:使用java.net.URL 下载服务器图
  5. Android(安卓)requires compiler compliance level 5.0. Please
  6. android中下载文件到sdcard和进度条小结
  7. android中下载文件到sdcard和进度条小结
  8. 分享17个老罗Android开发视频教程(免费下载)
  9. 用Gradle 构建你的android程序

随机推荐

  1. 移动模拟器是否有效?Css Jquery在iPad上
  2. 如果没有内容,隐藏边框
  3. js除了可以访问当前html文档,可不可以访问
  4. QQ、MSN、淘包旺旺、Skype常设对话的html
  5. 如何使用 CSS3 添加投影
  6. service $sce or ng-bind-html
  7. qmlcanvas,类Html5 canvas的组件
  8. 不太明白,此处的"text/plain" 与"text/htm
  9. 使活动选项卡在模式下不起作用
  10. Linux 抓取网页方式(curl+wget)