您的位置:首页 > 移动开发 > Android开发

Android_运用log4j打印日志

2015-07-18 14:08 513 查看

日志的重要性

平时我们debug模式开发项目时,我们需要打印出debug级别的日志,这样在正式发布版本上运行的时候,这些debug日志是不会出现在日志文件中的,日志中记录的是比他更高级别的info,error日志。下面我们就使用log4j来为我们app增加日志打印功能,并保存到本地,供我们后期分析 。

1,需要2个jar包

1,log4j官方包

官方下载连接

2,安卓对log4j的支持包

请下载本篇项目代码

二,写日志类APPLogger

Log4j里面有个Logger类,使用这个类代替安卓中的Log类来打印日志,log4j会将日志同时写入配置好的文件中.

下面,重写一个包装类,来封装Logger,包括配置和打印方法。

import org.apache.log4j.Level;
import org.apache.log4j.Logger;

import de.mindpipe.android.logging.log4j.LogConfigurator;

public class ViLogger {

//典型的单例模式写法
private static Logger instance;

static {
instance = Logger.getLogger(ViLogger.class);
}

private ViLogger() {
}

/**
* 配置日志
* 日志文件目录等
*
* @param compile_level
* @param filename
*/
public static void init(String compile_level, String filename) {
LogConfigurator configurator = new LogConfigurator();
configurator.setFileName(filename);
//设置编译级别,可以根据当前模式来设置
if (compile_level.equals("debug"))
//debug及以上级别的消息会被打印
configurator.setRootLevel(Level.DEBUG);
else
//info及以上级别的消息会被打印
configurator.setRootLevel(Level.INFO);

configurator.setLevel("org.apache", Level.ERROR);
//%p 表示日志语句的优先级
//%c 日志信息所在的类名
//%m%n 表示日志信息的内容
configurator.setFilePattern("%d %-5p [%c{2}]-[%L] %m%n");
configurator.setMaxFileSize(1024 * 1024 * 1);
configurator.setMaxBackupSize(3);
configurator.setImmediateFlush(true);
//很重要的一步,配置configure
configurator.configure();
}

public static void d(String msg) {
instance.debug(msg);
}

public static void i(String msg) {
instance.info(msg);
}

public static void e(String msg) {
instance.error(msg);
}
}


三,在application类中初始化日志类

package com.raise.wind.log4jdemo;

import android.app.Application;

import com.raise.wind.log4jdemo.logger.APPLogger;

/**
* Created by yu on 2015/7/18.
*/
public class APP extends Application {
@Override
public void onCreate() {
String logFilePath = ...;
//        参数可以配置在strings.xml中,这样就可以自动的区分debug版和release版
//        APPLogger.init(getString(R.string.compile_level));
ViLogger.init(getString(R.string.compile_level),
logFilePath);
}
}


ok,最简单的日志功能成功配好了,在程序中使用:

ViLogger.i("测试日志debug");


记得加入权限:

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


日志文件我没有写txt为后缀,用记事本打开即可。

2015-07-18 14:03:05,787 DEBUG [logger.APPLogger]-[18] 测试日志debug
2015-07-18 14:03:05,796 ERROR [logger.APPLogger]-[19] 测试日志error


如果使用代码混淆的话,请记得加入这两句:

-dontwarn org.apache.log4j.**
-keep class org.apache.log4j.**


ps:日志打印出不出的bug,多半是文件没有创建成功。

点我下载源码
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: