Android 如何使用log4j及注意事项
Android使用log4j
前言:
如果要直接在android工程中使用log4j,是有点问题的,会报如下的错:
11-2309:44:56.947:D/dalvikvm(1585):GC_FOR_MALLOCfreed3278objects/311568bytesin31ms rejectingopcode0x21at0x000a rejectedLorg/apache/log4j/config/PropertySetter;.getPropertyDescriptor (Ljava/lang/String;)Ljava/beans/PropertyDescriptor; VerifierrejectedclassLorg/apache/log4j/config/PropertySetter; ExceptionLjava/lang/VerifyError;thrownduringLorg/apache/log4j/LogManager;. ShuttingdownVM threadid=1:threadexitingwithuncaughtexception(group=0x400259f8) FATALEXCEPTION:main java.lang.ExceptionInInitializerError atorg.slf4j.impl.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:64) atorg.slf4j.LoggerFactory.getLogger(LoggerFactory.java:253) atorg.slf4j.LoggerFactory.getLogger(LoggerFactory.java:265) ... Causedby:java.lang.VerifyError:org.apache.log4j.config.PropertySetter atorg.apache.log4j.PropertyConfigurator.parseAppender(PropertyConfigurator.java:772) atorg.apache.log4j.PropertyConfigurator.parseCategory(PropertyConfigurator.java:735) atorg.apache.log4j.PropertyConfigurator.configureRootCategory(PropertyConfigurator.java:615) atorg.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:502) atorg.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:547) atorg.apache.log4j.helpers.OptionConverter.selectAndConfigure(OptionConverter.java:483) atorg.apache.log4j.LogManager.(LogManager.java:127) ...20more
因此,可以另外多下载一个叫android-logging-log4j的项目,地址在:
http://code.google.com/p/android-logging-log4j/downloads/list,注意,原本的log4j还是需要的。
在AndroidManifest.xml中,增加如下设置:
<uses-permissionandroid: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{ @Override publicvoidonCreate(){ 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
的方式保存了。其他和log4j的用法差不多了。
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!