The NoteBook of EricKong

            BlogJava :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
            611 Posts :: 1 Stories :: 190 Comments :: 0 Trackbacks

          常用鏈接

          留言簿(11)

          我參與的團(tuán)隊(duì)

          搜索

          •  

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          Android is a Linux-based operating system designed primarily for touchscreen mobile devices such as smartphones and tablet computers, developed by Google in conjunction with the Open Handset Alliance. The Android SDK provides the tools and APIs necessary to begin developing applications on the Android platform using the Java programming language. Apache log4j is a logging library for Java and an Apache Software Foundation Project and developed by a dedicated team of Committers of the Apache Software Foundation. Here we will explain how to integrate Log4J in Android based Java applications.

          Step 1

          Download Log4J library from http://logging.apache.org/log4j/1.2/download.html

          Step 2

          Configuring Log4J library the normal way - using XML configuration file - can't be used in Android based Java application as the configuration classes of Log4J use beans from the package "java.beans" (e.g. PropertyDescriptor). Not all classes of this package are supported in Android, so using Log4J directly in Android Java application will case exceptions like the following one to be thrown:

          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

          There is a project called android-logging-log4j, which provides a convenient way to configure the log4j system properly.

          Download "Android Logging Log4J" library from http://code.google.com/p/android-logging-log4j/downloads/list

          Step 3

          Add Both libraries "log4j" and "android-logging-log4j" to your application libraries

          Step 4

          In order to log to a file on the external storage, the following permission needs to be placed in AndroidManifest.xml

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

          Step 5

          In your application Main class:

          1. package com.android.myapp ;
          2.  
          3. import java.io.File ;
          4.  
          5. import org.apache.log4j.Level ;
          6. import org.apache.log4j.Logger ;
          7.  
          8. import android.app.Application ;
          9. import android.os.Environment ;
          10. import de.mindpipe.android.logging.log4j.LogConfigurator ;
          11.  
          12. public class MyApplication extends Application {
          13.         @Override
          14.         public void onCreate ( ) {
          15.                 super . onCreate ( ) ;
          16.                 LogConfigurator logConfigurator = new LogConfigurator ( ) ;
          17.                 logConfigurator. setFileName ( Environment . getExternalStorageDirectory ( )
          18.                                 + File . separator + "MyApp" + File . separator + "logs"
          19.                                 + File . separator + "log4j.txt" ) ;
          20.                 logConfigurator. setRootLevel ( Level. DEBUG ) ;
          21.                 logConfigurator. setLevel ( "org.apache" , Level. ERROR ) ;
          22.                 logConfigurator. setFilePattern ( "%d %-5p [%c{2}]-[%L] %m%n" ) ;
          23.                 logConfigurator. setMaxFileSize ( 1024 * 1024 * 5 ) ;
          24.                 logConfigurator. setImmediateFlush ( true ) ;
          25.                 logConfigurator. configure ( ) ;
          26.                 Logger log = Logger. getLogger ( MyApplication. class ) ;
          27.                 log. info ( "My Application Created" ) ;
          28.         }
          29. }

          Now you will have log4j configured to log to Path: (Environment.getExternalStorageDirectory() + File.separator + "MyApp" + File.separator + "logs" + File.separator + "log4j.txt") with DEBUG level and ERROR lever for "org.apache" package with file pattern "%d %-5p [%c{2}]-[%L] %m%n" and other configuration parameters

          posted on 2013-06-07 14:02 Eric_jiang 閱讀(521) 評(píng)論(0)  編輯  收藏 所屬分類: Android
          主站蜘蛛池模板: 霍邱县| 乐亭县| 财经| 丹阳市| 凤山市| 甘德县| 丽水市| 新平| 乌兰浩特市| 肇州县| 鹤峰县| 普兰店市| 东丰县| 汶上县| 八宿县| 曲水县| 岚皋县| 旬邑县| 乐业县| 张家界市| 老河口市| 苍山县| 宝应县| 二连浩特市| 土默特左旗| 阿瓦提县| 惠水县| 舞钢市| 东乡| 商丘市| 金昌市| 瑞昌市| 蓝田县| 周宁县| 景泰县| 安泽县| 临沂市| 伊川县| 清镇市| 出国| 武清区|