摘要:本文将带你了解Android应用开发Android 自定义Log 多模式实例教程,希望本文对大家学Android有所帮助。
本文将带你了解Android应用开发Android 自定义Log 多模式实例教程,希望本文对大家学Android有所帮助。
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(
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频道!
您输入的评论内容中包含违禁敏感词
我知道了
请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号