Android应用开发Android 自定义Log 多模式实例教程
白羽 2019-04-15 来源 :网络 阅读 532 评论 0

摘要:本文将带你了解Android应用开发Android 自定义Log 多模式实例教程,希望本文对大家学Android有所帮助。

    本文将带你了解Android应用开发Android 自定义Log 多模式实例教程,希望本文对大家学Android有所帮助。



Android应用开发Android 自定义Log 多模式实例教程   

    LOG常用的方法有以下5个:
   
    Log.v() Log.d() Log.i() Log.w() Log.e() 。分别对应下图,除Assert
   
   
   
    1、Verbose 的调试颜色为黑色的,任何消息都会输出,这里的v代表verbose啰嗦的意思,平时使用就是Log.v(“”,”“);
   
    2、Debug 的输出颜色是蓝色的,仅输出debug调试的意思,但他会输出上层的信息,过滤起来可以通过DDMS的Logcat标签来选择.
   
    3、Info 的输出为绿色,一般提示性的消息information,它不会输出Log.v和Log.d的信息,但会显示i、w和e的信息
   
    4、Warn 的意思为橙色,可以看作为warning警告,一般需要我们注意优化Android代码,同时选择它后还会输出Log.e的信息。
   
    5、Error 为红色,可以想到error错误,这里仅显示红色的错误信息,这些错误就需要我们认真的分析,查看栈的信息了。
   
    6、Assert 表示断言失败后的错误消息,这类错误原本是不可能出现的错误,现在却出现了,是极其严重的错误类型。
   
    Debug属于调试日志
   
    其他五类Log的重要程度排序如下。
   
    Assert > Error > Warn > Info > Verbose
   
    推荐颜色:
   
    Verbose:#000000 Debug :#0000FF Info:#008700 Warn:#878700   Error:#FF0000
   
    Assert:#8F0005
   
    Android Studio设置颜色步骤:
   
    File ->Setting ->Editor->Color&Fonts->Android Logcat
   
   
   
    有个Log的工具类:https://github.com/orhanobut/logger
   
   
   
    用法很简单:
   
   
    //在Application中初始化一下
    Logger.addLogAdapter(new AndroidLogAdapter());
    //就可以用了
    Logger.v(verbose);
            Logger.d(debug);
            Logger.i(information);
            Logger.w(warning);
            Logger.e(error);
            Logger.json({\a\: \Hello\,   \b\: \World\});
            Logger.xml(\n   +
                     George\n +
                     John\n +
                     Reminder\n +
                    Don't forget the   meeting!\n +
                   
);
    好炫酷,好想自己写一个,看了看源码,试试写个简单的
   
    先分析下源码的执行流程:
   
    Logger.v
    -> LoggerPrinter.log
    -> AndroidLogAdapter.log
    -> PrettyFormatStrategy.log
    -> PrettyFormatStrategy.logChunk
    -> LogcatLogStrategy.log 至此打印结束
   
    多日志打印即循环执行此过程,此项目很好的使用了策略模式和Builder模式。
   
    其中:
   
    Printer 的实现类有:LoggerPrinter
   
    LogAdapter 的实现类有:AndroidLogAdapter、DiskLogAdapter
   
    FormatStrategy 的实现类有:CsvFormatStrategy、PrettyFormatStrategy
   
    LogStrategy 的实现类有:DiskLogStrategy、LogcatLogStrategy
   
   
   
    BuildConfig 里面是一些常量
   
    Logger 一些具体的执行方法,调用LoggerPrinter 中的具体实现供客户端调用
   
    Utils 工具类
   
    下面仿照大佬的代码写个简单的吧
   
    既然是简单的,就简单到底,就3个核心类(实际就一个):
   
   
   
    1、IPrinter.java(定义一些接口)
   

    package com.zx.logs;
    public interface IPrinter {
     
        void v(String message, Object...   args);
        void d(String message, Object...   args);
        void i(String message, Object...   args);
        void w(String message, Object...   args);
        void e(String message, Object...   args);
     
        void json(String json);
        void xml(String xml);
     
        void log(int priority, String   message, Throwable throwable, Object... args);
        // priority    优先顺序
        // message     消息
        // tag         日志中tag,相当于Logcat Filter
        // throwable   子线程中打印日志,提取发生行数
        // args        String格式化字符串
        void log(int priority, String   message, String tag, Throwable throwable, Object... args);
     
    }
    2、Logs.java(暴露出来方法)
   
   
    package com.zx.logs;
    public class Logs {
     
     
        private static IPrinter iPrinter   = new LogsPrinter();
     
        public static void v(String   message, Object... args) {
            iPrinter.v(message,   args);
        }
     
        public static void d(String   message, Object... args) {
            iPrinter.d(message,   args);
        }
     
        public static void i(String   message, Object... args) {
            iPrinter.i(message,   args);
        }
     
        public static void w(String   message, Object... args) {
            iPrinter.w(message,   args);
        }
     
        public static void e(String   message, Object... args) {
            iPrinter.e(message,   args);
        }
     
     
        public static void log(int   priority, String tag, String message, Throwable throwable) {
            iPrinter.log(priority, tag,   message, throwable);
        }
     
        public static void json(String   json) {
            iPrinter.json(json);
        }
     
        public static void xml(String   xml) {
            iPrinter.xml(xml);
        }
     
    }
    3、LogsPrinter.java(大部分处理都在这里了)
   
   
    body{ }    

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标移动开发之Android频道!

本文由 @白羽 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程