在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.写测试代码:

packagecom.test.usb;importjava.io.File;importorg.apache.http.client.methods.HttpPost;importorg.apache.http.entity.ByteArrayEntity;importorg.apache.http.impl.client.DefaultHttpClient;importorg.apache.log4j.Level;importorg.apache.log4j.Logger;importde.mindpipe.android.logging.log4j.LogConfigurator;importandroid.app.Activity;importandroid.os.Bundle;importandroid.os.Environment;importandroid.util.Log;importandroid.widget.TextView;publicclassMainActivityextendsActivity{privateLoggergLogger;bsit_cardreaderreader;TextViewtxt,txt1,txt2,txt3,txt4,txt5;privatestaticfinalStringTAG=MainActivity.class.getCanonicalName();publicvoidconfigLog(){finalLogConfiguratorlogConfigurator=newLogConfigurator();logConfigurator.setFileName(Environment.getExternalStorageDirectory()+File.separator+"crifanli_log4j.txt");//SettherootloglevellogConfigurator.setRootLevel(Level.DEBUG);//SetloglevelofaspecificloggerlogConfigurator.setLevel("org.apache",Level.ERROR);logConfigurator.configure();gLogger=Logger.getLogger(this.getClass());//gLogger=Logger.getLogger("CrifanLiLog4jTest");}@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);configLog();gLogger.debug("testandroidlogtofileinsdcardusinglog4j");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=newbsit_cardreader();intopenResult=reader.openreader(this);txt.setText("MainActivity--reader="+openResult);Log.i(TAG,"---------------4---MainActivity--reader="+openResult);//7intbslot=0;//非接触卡通道byte[]atr=reader.card_poweron(bslot);Log.i(TAG,"---------------5---MainActivity--atr="+atr);txt1.setText("MainActivity--reader="+openResult);byte[]cmd=newbyte[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(inti=0;i<resp.length;i++){Log.i(TAG,"------------7-------resp["+i+"]="+resp[i]);txt3.setText("------------7-------resp["+i+"]="+resp[i]);}reader.card_poweroff(bslot);//bytecmd=(byte)0x84;//Log.i(TAG,"---------------6---MainActivity--cmd="+cmd);}publicbooleanpost(byte[]paramArrayOfByte,Stringhttp){ByteArrayEntityarrayEntity=newByteArrayEntity(paramArrayOfByte);arrayEntity.setContentType("application/octet-stream");HttpPosthttpPost=newHttpPost(http);httpPost.setEntity(arrayEntity);DefaultHttpClientclient=newDefaultHttpClient();try{intresult=client.execute(httpPost).getStatusLine().getStatusCode();Log.i(TAG,"post="+result);txt4.setText("post="+result);}catch(Exceptione){thrownewRuntimeException(e);}returnfalse;}}

即可实现:

(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中,增加如下设置:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
然后在程序中如下使用:

packagecom.android.myapp;importjava.io.File;importorg.apache.log4j.Level;importorg.apache.log4j.Logger;importandroid.app.Application;importandroid.os.Environment;importde.mindpipe.android.logging.log4j.LogConfigurator;publicclassMyApplicationextendsApplication{@OverridepublicvoidonCreate(){super.onCreate();LogConfiguratorlogConfigurator=newLogConfigurator();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();Loggerlog=Logger.getLogger(MyApplication.class);log.info("MyApplicationCreated");}}

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

本文出自 “没有水勒鱼” 博客,转载请与作者联系!

更多相关文章

  1. 《Android/OPhone 开发完全讲义》已出版,现提供源代码下载
  2. Android项目的目录结构详解
  3. 《Android/OPhone 开发完全讲义》已出版,现提供源代码下载
  4. Android开发包下载
  5. 将Android项目导入到Eclipse开发环境
  6. 《Android/OPhone 开发完全讲义》已出版,现提供源代码下载
  7. 【Android】TextView动态设置Drawable资源
  8. Android串口通信:串口读写实例
  9. Android如何使用so文件和Android(安卓)studio中导入so

随机推荐

  1. android读取raw下面的文件
  2. Android(安卓)之 五大布局案例
  3. Android----Google code android开源项目
  4. Android 新浪微博代码
  5. Java.lang.ClassNotFound Instrumentatio
  6. android 判断service是否开启
  7. android 命令大全
  8. How to install Android SDK and play wi
  9. Android横竖屏切换时,不重新onCreate()的
  10. Android Studio V0.2.x For Windows下载