Log的级别?

日志级别按照高低排序为:ERROR,WARN,INFO,DEBUG,VERBOSE,

日志输出:

Log.e()输出ERROR级别的日志信息

Log.w()输出WARN,ERROR级别的日志

Log.i()输出WARN,ERROR级别的日志

Log.d() 输出DEBUG,INFO,WARN,ERROR级别的日志

Log.v () 输出VERBOSE,DEBUG,INFO,WARN,ERROR级别的日志

Log的封装?

平时在开发的过程中,总是随手就来Log.e(),Log.w(),Log,i().........调试的不亦乐乎,等项目完成准备上线时,这些日志咋办呢?留着?显得不够正式,删了?费时费力伤神,以后维护指不定这些日志信息能帮忙保住饭碗,那咋整?LogUtil,开发的时候打印,发布时不打印。

package com.kbr.issuestandard.utils;

import android.util.Log;

/**
* LOG工具类
*/
public class LogUtil {
private final static boolean isDebug = true;
private final static String TAG = "LogUtil"; public static void v(String tag, String msg) {
if (isDebug)
Log.v(tag, msg);
} public static void v(String msg) {
if (isDebug)
Log.v(TAG, msg);
} public static void d(String tag, String msg) {
if (isDebug)
Log.d(tag, msg);
} public static void d(String msg) {
if (isDebug)
Log.d(TAG, msg);
} public static void i(String tag, String msg) {
if (isDebug)
Log.i(tag, msg);
} public static void i(String msg) {
if (isDebug)
Log.i(TAG, msg); } public static void w(String tag, String msg) {
if (isDebug)
Log.w(tag, msg);
} public static void w(String msg) {
if (isDebug)
Log.w(TAG, msg);
} public static void e(String tag, String msg) {
if (isDebug)
Log.e(tag, msg);
} public static void e(String msg) {
if (isDebug)
Log.e(TAG, msg);
}
}

使用强大的Logger库

考虑到系统的log硬件条件太基础啦,我们不妨使用简单,强大的Logger框架,项目地址为https://github.com/orhanobut/logger

1:首先我们先在项目中添加依赖(implementation 'com.orhanobut:logger:2.2.0')

    //logger
implementation "com.orhanobut:logger:$rootProject.loggerVersion"

2:在Application中配置初始化(非必须,有默认的)

private void initLogger() {
FormatStrategy formatStrategy = PrettyFormatStrategy.newBuilder()
.showThreadInfo(false) // 是否显示线程,默认显示
.methodCount(3) // 显示多少方法 默认 2
.methodOffset(7) // 设置方法的偏移量. 默认是 5
.tag("My custom tag")
.build();
Logger.addLogAdapter(new AndroidLogAdapter(formatStrategy));
Logger.addLogAdapter(new AndroidLogAdapter(){
@Override
public boolean isLoggable(int priority, @Nullable String tag) {
//返回true,打印日志,返回false ,不打印日志,可调试时返回true,发布时返回false
return BuildConfig.DEBUG;
}
});
//保存日志到文件中
Logger.addLogAdapter(new DiskLogAdapter());
}

3:使用方法

打印不同级别日志

Logger.d("debug");
Logger.e("error");
Logger.w("warning");
Logger.v("verbose");
Logger.i("information");
Logger.wtf("What a Terrible Failure");

支持字符串格式参数

Logger.d("hello %s", "world");

支持集合输出(仅适用于Debug 模式)

Logger.d(MAP);
Logger.d(SET);
Logger.d(LIST);
Logger.d(ARRAY);

支持Json和Xml格式数据输出(仅适用于Debug 模式)

Logger.json(JSON_CONTENT);
Logger.xml(XML_CONTENT);

将日志保存到文件

Logger.addLogAdapter(new DiskLogAdapter());

使用android日志工具的更多相关文章

  1. Android学习之基础知识三(Android日志工具Log的使用)

    Android中的日志工具Log(android.util.Log): 1.打印日志的方法(按级别从低到高排序): Log.v():级别verbose,用于打印最为烦琐,意义最小的日志 Log.d() ...

  2. Android日志工具的使用

    一.使用Android的日志工具Log 1.Android中的日志工具类是Log,这个类中提供了如下5个方法来供我们打印日志. log.v():用于打印哪些最为繁琐.意义最小的日志信息.对应级别ver ...

  3. Android Studio日志工具的使用

    Android Studio的LogCat工具 Verbose:对应Log.v(),这个方法用于打印那些最为琐碎的信息,意义最小的日志信息.是Android日志里面级别最低的一种. Debug:对应L ...

  4. Android Studio 单刷《第一行代码》系列 02 —— 日志工具 LogCat

    前情提要(Previously) 本系列将使用 Android Studio 将<第一行代码>(书中讲解案例使用Eclipse)刷一遍,旨在为想入坑 Android 开发,并选择 Andr ...

  5. Android中日志工具的使用

    添加LogCat到你的Eclipse日志在任何项目的开发过程中都会起到非常重要的作用,在Android项目中如果你想要查看日志则必须要使用LogCat工具.当你第一次在Eclipse中运行Androi ...

  6. Android开发调试日志工具类[支持保存到SD卡]

    直接上代码: package com.example.callstatus; import java.io.File; import java.io.FileWriter; import java.i ...

  7. Android基础知识02—安卓日志工具LogCat的五种方法

    --------Android 02-------- >>> Android的日志工具LogCat    五个方法,记录信息的级别不一样,从低到高为:    1.Log.v()-日志 ...

  8. 使用 Android 的日志工具LogCat

    Android 中的日志工具类是 Log(android.util.Log),这个类中提供了如下几个方法来供我们打印日志. 1.    Log.v() 这个方法用于打印那些最为琐碎的,意义最小的日志信 ...

  9. 【转】使用 Android 的日志工具LogCat

    Android中的日志工具类是 Log(android.util.Log),这个类中提供了如下几个方法来供我们打印日志. 1.    Log.v() 这个方法用于打印那些最为琐碎的,意义最小的日志信息 ...

随机推荐

  1. maven仓库之第二篇

    1. 什么是maven? 它是一个软件开发的管理工具,主要管理的工作是:依赖管理,项目构建. 2. 使用maven的好处? 能够集中管理jar包,提供一键构建. 3. maven的安装及配置 配置:M ...

  2. 用两种以上的 方式实现一个方法或者对象,调用时打印"你好xx",已定义的代码不能做修改,自己编译的不能出现"你好"? (Javasctript)

    先上代码 const obj = { say(){ Array.from(arguments).forEach(item=>{ console.log(`${this.str} ${item}` ...

  3. ArcGIS api for JavaScript 3.27 在线浏览的一些小部件

    var navOption; var navToolbar;// 当前选择的操作 require( [ "esri/toolbars/navigation", "esri ...

  4. angularjs $http请求网络数据并展示

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. [20191101]完善vim的bccalc插件8.txt

    [20191101]完善vim的bccalc插件8.txt --//今天移植bccalc插件到linux,发现一些问题.我自己已经在windows下使用一段时间,从来没有在linux下测试.看来很少人 ...

  6. 对于Python语音性能的一些个人见解

    虽然运行速度慢是 Python 与生俱来的特点,大多数时候我们用 Python 就意味着放弃对性能的追求.但是,就算是用纯 Python 完成同一个任务,老手写出来的代码可能会比菜鸟写的代码块几倍,甚 ...

  7. 信号驱动式I/O

    信号驱动式I/O是指进程预先告知内核,使得当某个描述符上发生某事时,内核使用信号通知相关进程. 异步I/O是进程执行I/O系统调用(读或写)告知内核启动某个I/O操作,内核启动I/O操作后立刻返回到进 ...

  8. UVA1401 Remember the word DP+Trie

    问题描述 洛谷(有翻译) 题解 DP,设\(opt_i\)代表前\(i\)个字符方案数. Trie优化,刷表法. \(\mathrm{Code}\) #include<bits/stdc++.h ...

  9. 推荐|MathType的使用技巧

    前言 持续更新中,敬请期待... 数学学科 制作新的数学符号 不包含于符号:输入$\not\subseteq,然后按回车键enter即可: 分式\(\cfrac{3-x}{2x-1}\)符号:输入$\ ...

  10. Python连载52-SOCKET编程示例

    一.UDP编程 1.客户端Client:发起访问的一方. 2.服务器端 3.server段编程 (1)建立socket,socket是负责具体通信的一个实例 (2)绑定,为创建的socket指派固定的 ...