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,多半是文件没有创建成功。
点我下载源码
相关文章推荐
- Android学习笔记----Activity的生命周期图示
- 教你在Android Studio 中进行单元测试
- Android开发者指南(6) —— AIDL
- 接Android外包
- android gson解析Json,Could not find class 'com.google.gson.Gson'
- Android 长时间运行任务说明
- Android之——常见Bug及其解决方案
- 【转】Android ListView长按事件触发点击事件
- Android--Parcelable接口用法
- Android (shape,gradient)详解
- android 相关下载
- Android多媒体:音效链
- Android多媒体:AudioSystem,AudioService和AudioManager
- 对android volley框架的理解(一)
- Android Material Design之Toolbar与Palette实践
- android菜鸟学习笔记30----Android使用百度地图API(一)准备工作及在应用中显示地图
- Android项目重构之路:实现篇 读后思考
- Android View深入学习(一),View的测量(Measure)过程
- Android的Looper,Handler以及线程间的通信
- Android 使用AIDL调用外部服务