在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 gen文件不生成、R文件报错
  2. Android 4.0 Launcher2源码分析——主布局文件
  3. Android中使用SAX方式解析XML文件

随机推荐

  1. Plugin-X Integration Guide for Android
  2. Google Android尝鲜 - 计算器小程序
  3. View高度动画
  4. android:如何开启webview的LBS功能
  5. android OpenGL es lession6
  6. Android模拟器获取IP的方法
  7. android graphic(13)—surface flinger中
  8. android APK包 反编译
  9. Activity的“伪对话框”
  10. Android(安卓)解决 bitmap size exceed v