`

Android中使用log4j

阅读更多
  如果要直接在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的项目,地址在:
http://code.google.com/p/android-logging-log4j/downloads/list,注意,原本的log4j还是需要的。

  在AndroidManifest.xml中,增加如下设置:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
   然后在程序中如下使用:
 

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
   的方式保存了。其他和log4j的用法差不多了。
4
3
分享到:
评论
5 楼 lishiming0308 2013-09-12  
是我将log4j 1.2版本和2.0版本混着用出现的问题,现在好用了
4 楼 lishiming0308 2013-09-12  
我在执行到logConfigurator.setLevel("org.apache", Level.ERROR); 这句是报unable to resolve static method 4307: Lorg/apache/log4j/helpers/LogLog;.setInternalDebugging (Z)V
这个错误,请问这是什么原因?
3 楼 wumingdlz 2012-11-18  
嗯,确实没问题,我是目录创建时没有按顺序来,所以报错了。呵呵。谢谢
2 楼 alexyao8 2012-11-15  
好使     
1 楼 wumingdlz 2012-11-15  
你在启动Ancroid时,在执行到logConfigurator.configure();时,不会报错?

相关推荐

    示范如何在android工程中使用log4j记录日志

    然而,由于Android系统对第三方库的限制,直接在Android工程中使用Log4j需要一些额外的步骤。本文将详细讲解如何在Android项目中集成和使用Log4j。 首先,我们需要理解Log4j的基本概念。Log4j主要包括三个核心组件...

    AndroidStudio 使用log4j记录日志,按照大小定期滚动日志Demo

    本文将详细介绍如何在Android Studio中使用log4j库来记录日志,并实现按照日志文件大小自动滚动的功能,以及如何进行日志内容的格式化输出。 首先,log4j是一款广泛使用的日志记录框架,它提供了灵活的日志配置和...

    android log4j资源上传

    - 在Android中使用log4j需要解决与Android SDK兼容性的问题,因为log4j依赖于Java的反射和线程API,而Android对这些API有所限制。 - 可以通过第三方库,如log4android或android-log4j,它们是专门为Android优化的...

    Android log4j使用Demo

    Log4j是一个广泛使用的Java日志框架,最初为Java平台设计,但通过一些方式,我们也可以在Android环境中利用它来增强日志记录的能力。本示例将探讨如何在Android项目中集成和使用log4j。 1. **引入log4j** 虽然...

    android-logging-log4j-1.0.3.jar

    在Android环境中,由于系统限制,不能直接使用标准的Log4j。`android-logging-log4j-1.0.3.jar`这个库文件就是为了解决这个问题,它提供了适配Android的Log4j实现,允许开发者在Android应用中无缝集成Log4j,并将...

    Android log4j

    本篇将详细介绍如何在Android项目中集成和使用`log4j`。 首先,`log4j`是一个强大的、灵活的日志库,提供了丰富的配置选项和多级别的日志记录能力,包括DEBUG、INFO、WARN、ERROR和FATAL等。与Android原生的日志...

    android-logging-log4j-1.0.3

    在Android应用中使用log4j,首先需要在项目的build.gradle文件中添加对应的依赖,通常是通过Maven或Gradle仓库获取。例如,如果使用Gradle,可以在dependencies块中添加如下代码: ```groovy dependencies { ...

    log4j jar包

    要在Android中使用Log4j,需要进行以下步骤: 1. 添加Log4j的JAR包(如题目所指的`log4j.jar`)到项目的`libs`目录。 2. 创建或复制`log4j.properties`到项目的资源文件夹,并根据需求进行配置。 3. 在Android代码...

    android日志框架jar包。log4j android版

    但有一些开发者社区提供了对Android的适配版本,让Log4j可以在Android应用中使用。 标题提及的"android日志框架jar包",指的是专为Android设计的Log4j实现。通常,这会包含两个JAR文件:一个核心的日志处理库,另一...

    android相关log4j-Jar包

    本文将详细探讨如何在Android项目中使用log4j-Jar包,以及其在日志管理中的作用和优势。 首先,Log4j的核心功能是提供了一种灵活的日志记录方式,允许开发者设置不同的日志级别,如DEBUG、INFO、WARN、ERROR和FATAL...

    android slf4j log4j日志框架

    这个版本包含了SLF4J的API以及一个针对Android系统的简单实现,使得开发者可以直接在Android应用中使用SLF4J,而无需额外的配置。SLF4J-android.jar会将日志输出到Android系统的LogCat中,与Android的日志系统无缝...

    android log4j的使用例子

    本篇将详细介绍如何在Android项目中使用log4j。 首先,理解Log4j的基本概念。Log4j主要包括三个核心组件:Logger(日志器)、Appender(输出端)和Layout(布局)。Logger负责生成日志消息,Appender定义了日志消息...

    android log4j

    总结来说,"android log4j"是指在Android环境中使用Log4J进行日志记录,这能提供更强大的日志管理和定制能力。同时,考虑到日志安全,开发者需要关注日志加密和截图控制,以确保数据不被非法获取。在实际开发中,...

    log4j 2.2、2.1等在android上的应用

    1. **安装与集成**:在Android项目中使用Log4j,需要将对应的AAR或JAR包添加到依赖库,并处理可能的冲突问题,例如与Android内置的日志系统`Log`类的冲突。 2. **配置**:创建适当的配置文件(如log4j2.xml),定义...

    android log4j记录日志到缓存或SD卡

    在Android中,由于安全性和权限限制,不能直接使用Log4j,但可以通过第三方库,如Logback-android,它是Logback的Android版本,兼容了Log4j的API。首先,我们需要在项目的build.gradle文件中添加Logback-android的...

    android-logging-log4j-1.0.2.jar

    Why logging with Log4j does not work in Android The problem is, that log4j uses classes of java.beans package e.g. PropertyDescriptor. Not all classes of this package are supported in Android. See ...

    android.logging.log4j

    这个是使用log4j时,用到这个包。其他下载还要积分,在这里提供出来免积分

    log4j日志打印demo

    **正文** 日志系统在软件开发中扮演着至关重要的角色,它可以帮助开发者追踪程序...在"log4j日志打印demo"中,你将学习到如何设置Log4j以实现控制台和SD卡(针对Android)的日志输出,从而在实际开发中更加得心应手。

    eclipse log4j 插件

    在Java开发中,日志管理是不可或缺的一部分,Log4j作为一款广泛使用的日志记录框架,为开发者提供了强大的日志处理能力。Eclipse IDE,作为Java开发的主流工具,也支持通过插件的形式集成Log4j,以便在开发过程中更...

Global site tag (gtag.js) - Google Analytics