Android 使用log4j 保存log日志信息至sdcard中

JAR包文件下载:

Log4J library:

http://mirrors.cnnic.cn/apache/logging/log4j/1.2.17/log4j-1.2.17.zip

Android Logging Log4J

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

注意

如果要直接在android工程中使用log4j,是有点问题的,会报如下的错: 
11-23 09:44:56.947: D/dalvikvm(1585): GC_FOR_MALLOC freed 3278 objects / 311568 bytes in 31ms 
rejecting opcode 0x21 at 0x000a 
rejected Lorg/apache/log4j/config/PropertySetter;.getPropertyDescriptor 
(Ljava/lang/String;)Ljava/beans/PropertyDescriptor; 
Verifier rejected class Lorg/apache/log4j/config/PropertySetter; 
Exception Ljava/lang/VerifyError; thrown during Lorg/apache/log4j/LogManager;. 
Shutting down VM 
threadid=1: thread exiting with uncaught exception (group=0x400259f8) 
FATAL EXCEPTION: main 
java.lang.ExceptionInInitializerError 
at org.slf4j.impl.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:64) 
at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:253) 
at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:265) 
... 
Caused by: java.lang.VerifyError: org.apache.log4j.config.PropertySetter 
at org.apache.log4j.PropertyConfigurator.parseAppender(PropertyConfigurator.java:772) 
at org.apache.log4j.PropertyConfigurator.parseCategory(PropertyConfigurator.java:735) 
at org.apache.log4j.PropertyConfigurator.configureRootCategory(PropertyConfigurator.java:615) 
at org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:502) 
at org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:547) 
at org.apache.log4j.helpers.OptionConverter.selectAndConfigure(OptionConverter.java:483) 
at org.apache.log4j.LogManager.(LogManager.java:127) 
... 20 more 

因此,需要多下载一个名为“android-logging-log4j”的jar包,add build path中。

在AndroidManifest.xml中,添加向SDcard写文件的权限:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

在extends Application的自定义的MyApplication文件中:

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 
程序中使用的实例:

import org.apache.log4j.Logger;

public class ExampleLog4J{
    privatefinalLogger log =Logger.getLogger(ExampleLog4J.class);

    publicvoid myMethod(){
        log.info("This message should be seen in log file and logcat");
    }
}






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值