Android_运用log4j打印日志

来源:互联网 发布:sql注入 预处理 编辑:程序博客网 时间:2024/06/05 10:16

日志的重要性

平时我们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] 测试日志debug2015-07-18 14:03:05,796 ERROR [logger.APPLogger]-[19] 测试日志error

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

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

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

点我下载源码

0 0