Logger 日志打印库详解

一、基本使用

Logger 是一款 Android 平台上的简单、优雅、强大的开源日志库。

1,Logger 提供了以下方法:
  • 打印线程的信息
  • 打印类的信息
  • 打印方法的信息
  • 优雅的打印JSON数据
  • 优雅的打印换行符
  • 打印简洁的信息
  • 点击日志跳转至源码
2,引入依赖库,在 app 根目录的 build.gradle 文件中加入如下代码:
compile 'com.orhanobut:logger:1.15'
3,包括的方法:
  • Logger.d(“hello”);
  • Logger.d(“hello %s %d”, “world”, 5); // 字符串格式化
  • Logger.d(“hello”);
  • Logger.e(“hello”);
  • Logger.w(“hello”);
  • Logger.v(“hello”);
  • Logger.wtf(“hello”);
  • Logger.json(JSON_CONTENT);
  • Logger.xml(XML_CONTENT);
  • Logger.log(DEBUG, “tag”, “message”, throwable);
4,同时支持 List、Map、Set 和数组的输出:
Logger.d(list);
Logger.d(map);
Logger.d(set);
Logger.d(new String[]);
5,Logger 全局配置

这里是全局的 Logger 配置,如果不设置会使用默认值

Logger
  .init(YOUR_TAG)                 // 默认 TAG 为 PRETTYLOGGER
  .methodCount(3)                 // 默认方法数 2
  .hideThreadInfo()               // 默认显示线程信息
  .logLevel(LogLevel.NONE)        // 默认级别 LogLevel.FULL,为显示所有级别日志
  .methodOffset(2)                // 设置调用堆栈的偏移值,默认是 0
  .logAdapter(new AndroidLogAdapter()); // 默认 AndroidLogAdapter
}

LogLevel.NONE 表示不打印日志,在发布版本中用
通过 logAdapter() 方法,可以自定义日志实例。需要实现 LogAdapter

6,Logger 局部配置

对单个 Log 的配置,如下:

TAG:

Logger.init("mytag");
Logger.t("mytag").d("hello");

methodCount:

Logger.init().methodCount(1);
Logger.t(1).d("hello");

二、使用技巧

1,默认的设置,效果如下:

logger_print_sample

2,不显示方法数和线程信息,效果如下:
Logger.init().methodCount(0).hideThreadInfo();

logger_print_sample_only_message

3,Json 排版效果:
Logger.json(YOUR_JSON_DATA);

logger_print_json

三、日志打印规范

1,日志的级别(由高到低)
  • ERROR:系统中发生了非常严重的问题,导致业务不正常服务,必须马上进行处理。

  • WARN:预期会发生的,并且已经有了其他的处理流程,处理过程可以继续。

  • INFO:重要的业务处理已经结束。如:处理机票预订的系统,对每一张票要有且只有一条INFO信息描述 “[Who] booked ticket from [Where] to [Where]”;另外显著改变应用状态的每一个 action,如数据更新,外部系统请求。

  • DEBUG:开发人员使用,该级别日志的主要作用是对系统每一步的运行状态进行精确的记录。通过该种日志,可以查看某一个操作每一步的执 行过程,可以准确定位是何种操作,何种参数,何种顺序导致了某种错误的发生。

  • VERBOSE:非常具体的信息,只能限于开发调试使用,不应该编译进产品中。

2,标点符号的使用
  • 表示一个进行中的过程用 … 结尾:

    Starting a process…

  • 表示错误用 ! 结尾:

    The name has more than 1 record!

  • 正常语句用 . 结尾, 例:

    Received an example event.

3,周期性调用的信息

有些函数可能会周期性地被调用,如果有日志的话会打印的非常多。所以要求:

  • 将此类函数的正常日志信息打到debug里面
  • 尽量去掉不重要信息,保留到最多一行为宜
4,禁止(不适当的打印)
  • 将你认为重要但不是错误的信息打到ERROR里面

  • 过于宽泛化的描述,比如:

    log.debug(“start processing…)

  • 应该更明确地记录操作,比如:

    log.debug(“start retrive endpoint data processing…”)

  • 尽量减少使用print或者用log往终端打印信息。

文章来源: http://www.ionesmile.com/android/log-logger-explain
 

参考资料:
http://www.jianshu.com/p/8551fe9c6354 (LOG使用规范)
https://github.com/alaudacloud/style-guides/blob/master/logs.md
http://blog.jobbole.com/56574/ (王健:最佳日志实践)

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Logger是一个Shell命令接口,可以通过该接口使用Syslog的系统日志模块,也可以从命令行直接向系统日志文件写入一行信息。Logger命令的语法是:logger [options [message,其中message是要写入日志文件的信息。可以使用选项来指定日志级别、标记和设施。使用Logger命令时可以通过-f选项将日志内容从文件中读取。Logger命令还可以通过-t选项设置标记,通过-p选项设置设施和级别来指定日志级别。例如,可以使用以下命令将一条日志消息写入系统日志文件:logger -i -t "my_test" -p local3.notice "test_info"[2。在这个例子中,-i选项表示忽略错误,-t选项设置标记为"my_test",-p选项设置设施和级别为local3.notice,"test_info"是要写入日志文件的消息。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [linux日志logger命令详解](https://blog.csdn.net/u011630575/article/details/52055116)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Linux系统logger日志详解](https://blog.csdn.net/renfeigui0/article/details/101098496)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值