Android下的自定义日志框架

前言

说起日志,平时调试用的Log类你肯定非常熟悉,并且用着也很方便,可是当你的项目逐渐走上正轨,并且越来越完善的时候,你可能会发现之前大量的Log输出严重影响了你项目的调试,并且分散到每个没文件里的Log输出非常难以管理。

(如果你已经开始考虑日志框架的问题了,那么说明你对日志有了一定的了解,这里就不在对日志级别之类的基础知识进行描述了,)

这个时候你可能会想:我需要一个日志管理工具!

如果你从事过javaEE开发或在网上查过“日志框架”这类关键词,那么

    log4j+commons-logging
    slf4j + logback

这样的优秀日志框架你一定不会陌生,他们已经成为了日志框架的主流。

但是,对于Android平台,这样的日志框架是不是太重了呢?通常来说,在移动开发中,我们并不建议大量引入第三方类库,每个类库的引用都是要经过细致的权衡的。

其实,我们完全根据自己的需求,可以开发自己的日志框架。这真的很简单!

开发之初

首先在开发之初,你需要知道几件事:

  • 我的需求什么?
  • 主流的日志框架功能有哪些?
  • 别人是怎么做的?

通常来说使用日志框架的需求有这些:
1. 控制日志输出级别,开发中输出所有日志,打release包时,只输出错误或警告日志。
2. 日志的本地保存和服务器上传
3. 可控的保存或上传开关和级别
4. 不同日志不同保存方式
5. 更优的日志使用接口
6. 更优的使用性能
7. …….

主流的日志框架功能:

slf4j 或log4j的模式是 包装类(门面)+ 日志框架。上述的需求,他们基本都已经实现,并且性能还很不错。但你需要注意的是,通常使用这些框架的都是大型服务器系统类型,他们对日志的需求很高,同时也不在乎多一个外部库。对于移动开发,你可能用不到那么多的功能,比如 “门面”的作用是可以兼容不同的日志框架,移动端有必要吗?小应用android自带的java.util.logging都够了。

别人是怎么做的:

这个时候你可能特别想知道别人是怎么做的?如果没有更好的了解渠道,反编译也许帮到你。楼主反编译了3个APK,Path、QQ空间、Google+。虽然读反编译的代码很痛苦,但你真的可以看到一些大平台是如何做的。
(关于反编译的方法,其实很简单,可以参考这篇博客:http://blog.csdn.net/vipzjyno1/article/details/21039349/

那么好吧,说了这么多,开始正题吧。下面是楼主写的日志管理框架,一个很简单的小Demo。

先看代码目录
这里写图片描述

很简单,关键代码只有3个。

LogConfig: Log的配置信息。
LogPrint :  Log的具体输出实现。
WLog: Log的 “门面” ,具体使用通过调用WLog。

先说一下日志的控制逻辑:

/**
     * Log输出机制: 
     *  LogLevel:Log输出级别控制
     * if( 要输出的日志级别  >= LogLevel )
     *      输出;
     * else
     *      不输出;
     *
     * Log上传和保存机制:
    * UploadSwitch: 上传保存的总开关
     * if(UploadSwitch == false)
     *      什么都不做
     * else
     *      if  (调用Log上传方法)
     *           上传并保存
     *      else
     *          if(flag>=LogConfig.UploadLevel)
     *                  上传
     *          if(flag>=LogConfig.SaveFileLevel)
     *                  保存
     *
     */

可能看的不太明白,看完代码你就懂了,很简单。

我们先看LogConfig.java

public class Log
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值