Android 自定义Log 多模式

本文介绍了Android自定义Log的实现,包括Log的常用方法、重要性排序以及颜色设定。通过分析现有开源库源码,展示了如何使用策略模式和Builder模式来设计日志系统,并给出了简单的自定义日志类实现。在调试模式下使用Log框架,正式发布时需关闭日志以避免性能影响。
摘要由CSDN通过智能技术生成

先上个效果图:

模板一:

这里写图片描述

模板二:

这里写图片描述
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("<note>\n" +
                "<to>George</to>\n" +
                "<from>John</from>\n" +
                "<heading>Reminder</heading>\n" +
                "<body>Don't forget the meeting!</body>\n" +
                "</note>");

好炫酷,好想自己写一个,看了看源码,试试写个简单的

先分析下源码的执行流程:
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) {
        i
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值