android控制台输出log4j,Android中使用log4j输出log内容到sd卡

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

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

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

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

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

解压得到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 

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的方式保存了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值