美文网首页Android开发类库精选Android知识程序员
一个精简、全面、方便的AndroidLog库--ALog

一个精简、全面、方便的AndroidLog库--ALog

作者: Blankj | 来源:发表于2017-04-09 17:56 被阅读1151次

    首先献上GitHub地址: ALog

    ![ALog][alogsvg] ![api][apisvg] ![build][buildsvg] ![License][licensesvg]

    Functions

    • 可设置Log开启和关闭
    • 可设置是否输出到控制台(Logcat)
    • 可设置Log全局Tag
    • 全局Tag为空时Tag为当前类名
    • 可设置Log是否显示头部信息
    • Log头部含有当前线程名
    • Log头部含有当前类及行号和函数名,支持点击跳转
    • 可设置Log是否写入文件
    • 可设置Log写入文件目录
    • 可设置Log写入文件前缀
    • 可设置Log是否显示边框
    • 可设置Log控制台过滤器
    • 可设置Log文件过滤器
    • 可设置Log栈深度
    • 支持控制台长字符串的输出
    • 支持多参数输出
    • 支持单独写入文件
    • 支持JSON串的输出
    • 支持XML串的输出
    • 支持Live Templates
    • jar包不足5Kb

    API→ALog.javaDemo

    init                    : 初始化
    getConfig               : 获取log配置
    Config.setLogSwitch     : 设置log总开关
    Config.setConsoleSwitch : 设置log控制台开关
    Config.setGlobalTag     : 设置log全局tag
    Config.setLogHeadSwitch : 设置log头部信息开关
    Config.setLog2FileSwitch: 设置log文件开关
    Config.setDir           : 设置log文件存储目录
    Config.setFilePrefix    : 设置log文件前缀
    Config.setBorderSwitch  : 设置log边框开关
    Config.setConsoleFilter : 设置log控制台过滤器
    Config.setFileFilter    : 设置log文件过滤器
    Config.setStackDeep     : 设置log栈深度
    v                       : Verbose日志
    d                       : Debug日志
    i                       : Info日志
    w                       : Warn日志
    e                       : Error日志
    a                       : Assert日志
    file                    : log到文件
    json                    : log字符串之json
    xml                     : log字符串之xml
    

    How to use

    compile 'com.blankj:alog:1.3.0' or ![Download][jarsvg]

    Usage

    初始化

    在Application的onCreate函数中初始化,如下

    // init it in ur application
    public void initALog() {
        ALog.Config config = ALog.init(this)
                .setLogSwitch(BuildConfig.DEBUG)// 设置log总开关,包括输出到控制台和文件,默认开
                .setConsoleSwitch(BuildConfig.DEBUG)// 设置是否输出到控制台开关,默认开
                .setGlobalTag(null)// 设置log全局标签,默认为空
                // 当全局标签不为空时,我们输出的log全部为该tag,
                // 为空时,如果传入的tag为空那就显示类名,否则显示tag
                .setLogHeadSwitch(true)// 设置log头信息开关,默认为开
                .setLog2FileSwitch(false)// 打印log时是否存到文件的开关,默认关
                .setDir("")// 当自定义路径为空时,写入应用的/cache/log/目录中
                .setFilePrefix("")// 当文件前缀为空时,默认为"alog",即写入文件为"alog-MM-dd.txt"
                .setBorderSwitch(true)// 输出日志是否带边框开关,默认开
                .setConsoleFilter(ALog.V)// log的控制台过滤器,和logcat过滤器同理,默认Verbose
                .setFileFilter(ALog.V)// log文件过滤器,和logcat过滤器同理,默认Verbose
                .setStackDeep(1);// log栈深度,默认为1
        ALog.d(config.toString());
    }
    

    借助我帮大家写好的Live Templates大家可以更方便地使用ALog,演示动画如下所示。

    templatestemplates

    大家可以下载这个Live Templates包,然后在AS中File→Import Settings即可。

    Tips: 如果有用到AndroidUtilCodeLogUtils,那么你导入这个Live Templates,输入ulog也会有智能模板哦。

    关于如何写Live Templates,其实大家可以借鉴安卓自带的Live Templates,然后效仿一下即可。

    默认初始化下的图例

    • ALog.d("debug");
    detaildetail
    • ALog.d("customTag", "debug0", "debug1");
    argsargs
    • ALog.d(longStr);
    longlong
    • ALog.file(longStr);
    filefile filecontentfilecontent
    • ALog.json(json);
    jsonjson
    • ALog.xml(xml);
    xmlxml

    更多使用请运行demo来查看。

    Contact

    ![jianshu][jianshusvg] ![weibo][weibosvg] ![Blog][blogsvg] ![QQ0Group][qq0groupsvg] ![QQ1Group][qq1groupsvg]

    相关文章

      网友评论

      • 16a878701cba:debug看了下,默认的LogSwitch开关是false....
        Blankj:@攻城狮一枚 仔细看看demo哈
      • 16a878701cba:有什么其他限制么?
      • 16a878701cba:楼主,为什么我调用这个库,生成不了Log,但是调用demo,运行正常。。。
      • 金鲨:偶然间发现你的这个控制台框架的,真心好喜欢,手上对比过几个类似的框架,你的比较小清醒,特点也很突出,今天测试了一下,有一些小建议提出希望群主扩展这个Alog框架,嘻嘻!!
        1.可以对对象,数组,Intent,Bundle,Message,Handler的打印支持,测试了一下对象需要自己实现tostring(),数组也需要arrays.toString()才行,其他都不行;
        2.扩展定义输出文件名称和文件大小,或者设置文件生成策略按照时间或者按照等级等;
        3.堆栈信息深度设置,我输出了一下E级别发现只打印头条堆栈信息,实际开发中有时候也需要下边的信息的;
        最后群主棒棒的!!!!!!!!!!!!!
        Blankj:文件前缀和栈深度都已加
        Blankj:既然你都说了这个库小清新,那么还会包括那么多我来做toString的事情吗,第二点的话我可以给文件加个前缀来解决,文件大小的话,相信要写入文件的日志一般也不会很大,隔天就会新建,大的话就影响到效率了,也没必要用我这个日志库了,推荐更好的mars/xlog,至于按等级分文件,这个比较鸡肋,堆栈深度的话,待考虑,毕竟加了会改比较多的代码,不加也不会影响什么。
      • Avalon1:群猪棒棒哒
        Blankj:@Avalon1 :yum:
      • 槑头脑:群主 棒棒的:smiley:
        Blankj:@槑头脑 :sunglasses:
      • 菲利柯斯:单独抽取出来了啊
        Blankj:@菲利柯斯 嗯,方便

      本文标题:一个精简、全面、方便的AndroidLog库--ALog

      本文链接:https://www.haomeiwen.com/subject/mridattx.html