什么是logger?
log信息是开发中最最重要的部分,那么如何更好的捕获信息呢?接下来就让我们了解一下强大的log框架–Logger。
什么是logger?
- 是一个简单,漂亮,强大的Android开源日志工具,代码托管在github
亮点?
- 能够提供:
- 线程信息:log在哪个线程
- 类信息:log在哪个类
- 方法信息:log在哪个方法的哪一行
- 漂亮地打印json
- 漂亮的打印XML
- 漂亮的换行分割
- 整洁的输出
- 跳转到源代码
为啥使用它?
- 默认实现是对于android.util.Log的封装
- 弥补了“android的logcat的message有字符长度的限制,超过将直接截断”的缺陷
- 支持参数添加占位符来格式化字符串,Logger.d(“hello %s”, “world”);
- 支持直接打印List,Set,Map,数组类型等引用类型
- 指定任意TAG
- 配置初始化选项
- 支持自定义CustomLogAdapter实现LogAdapter,替换android.util.Log
如何使用?
添加依赖:
compile 'com.orhanobut:logger:1.15'
- 1
- 配置初始化选项(非必须选项,不配置的情况下会使用系统默认的初始化配置
)
Logger.init("mytag") //LOG TAG默认是PRETTYLOGGER .methodCount(3) // 决定打印多少行(每一行代表一个方法)默认:2.hideThreadInfo() // 隐藏线程信息 默认:显示 .logLevel(LogLevel.NONE) // 是否显示Log 默认:LogLevel.FULL(全部显示) .methodOffset(2) // 默认:0 .logAdapter(new AndroidLogAdapter()); //可以自己构造适配器默认:AndroidLogAdapter
效果展示:
默认效果:
Logger.init().logLevel(LogLevel.FULL).methodCount(3);
- 1
methodCount(3) ,中间方法区数量变为3,每一行代表一个方法。
2.打印不同level的Log
Logger.v(String message); // VERBOSE级别,可添加占位符
Logger.d(Object object); // DEBUG级别,打印对象
Logger.d(String message); // DEBUG级别,可添加占位符
Logger.i(String message); // INFO级别,可添加占位符
Logger.w(String message); // WARN级别,可添加占位符
Logger.e(String message); // ERROR级别,可添加占位符
Logger.e(Throwable throwable, String message); // ERROR级别,可添加占位符
Logger.wtf(String message); // ASSERT级别,可添加占位符
Logger.xml(String xml);
Logger.json(String json);
效果展示:
Logger.v("vvvvvvvv");
- 1
Logger.d("dddddddd");
- 1
Logger.e("eeeeeeee");
- 1
Logger.w("wwwwwwww");
- 1
Logger.v("vvvvvvvv");
- 1
Logger.wtf("wtfwtf");
- 1
Logger.json("{\n" +" \"name\": \"BeJson\",\n" + " \"url\": \"http://www.yigouyule2.cn \",\n" + " \"page\": 88,\n" + " \"isNonProfit\":www.wanmeiyuele.cn true,\n" + " \"address\":www.120xh.cn {\n" + " \"www.feifanyule.cn/ street\": \"科技园路.\",\n" + " \"city\": \"江苏苏州\",\n" + " \"www.feifanyule.cn/ country\": \"中国\"\n" + " },\n" + " \"links\": [\n" + " {\n" + " \"name\": www.xuancayule.com/ \"Google\",\n" + " \"url\www.thd178.com": \"http://www.google.com\"\n" + " },\n" + " {\n" + " \"name\": \"Baidu\",\n" + " \"url\": \"http://www.baidu.com\"\n" + " },\n" + " {\n" + " \"name\": \"SoSo\",\n" + " \"url\": \"http://www.SoSo.com\"\n" + " }\n" + " ]\n" + "}");
@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState); methodA(); } void methodA(){ methodB(); } void methodB(){ Logger.d("methodB","sas","asdasdasd",1);
Logger.xml("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" + "<android.support.constraint.ConstraintLayout\n" + " xmlns:android=\"http://schemas.android.com/apk/res/android\"\n" + " xmlns:tools=\"http://schemas.android.com/tools\"\n" + " xmlns:app=\"http://schemas.android.com/apk/res-auto\"\n" + " android:id=\"@+id/activity_main\"\n" + " android:layout_width=\"match_parent\"\n" + " android:layout_height=\"match_parent\"\n" + " tools:context=\"com.libin.multi.tools.MainActivity\">\n" + "\n" + " <TextView\n" + " android:layout_width=\"wrap_content\"\n" + " android:layout_height=\"wrap_content\"\n" + " android:text=\"Hello World!\"\n" + " app:layout_constraintBottom_toBottomOf=\"@+id/activity_main\"\n" + " app:layout_constraintLeft_toLeftOf=\"@+id/activity_main\"\n" + " app:layout_constraintRight_toRightOf=\"@+id/activity_main\"\n" + " app:layout_constraintTop_toTopOf=\"@+id/activity_main\" />\n" + " \n" + " <ImageView\n" + " android:layout_width=\"wrap_content\"\n" + " android:layout_height=\"wrap_content\" />\n" + " \n" + " <TextView\n" + " android:layout_width=\"wrap_content\"\n" + " android:layout_height=\"wrap_content\" />\n" + "\n" + "</android.support.constraint.ConstraintLayout>\n");
new Thread(new Runnable() {@Overridepublic void run() { Logger.e("Thread"); } }).start();
什么是logger?相关推荐
- 日志处理logger
20220127 https://mp.weixin.qq.com/s/CgmfVqogqKBzezmIR7ZfsQ https://blog.csdn.net/kyle1314608/article ...
- python logger日志工具类
pytest命令行执行默认不会打印log信息,需要加'-s'参数或者 '–capture=no',即pytest -s #! /usr/bin/env python # coding=gbk impo ...
- log4cxx第三篇----使用多个logger
使用多个logger时,所有logger的配置写在一个配置文件里面 两个例子: 1 一个继承的例子(http://logging.apache.org/log4cxx/) // file com/fo ...
- java-错误log4j:WARN No appenders could be found for logger
使用环境: 1.IED工具 idea 2.系统环境win10 错误原因: 1.根本原因是日志问题 解决方式: 1.pom文件添加jar包 <dependency> <groupId& ...
- Log4j使用技巧——让子类使用父类中定义的Logger
关于Log4j,是一个很庞大的话题,在这里,我不能对其特点和使用方法进行一一描述,只想记录自己在使用Log4j开发项目的过程中遇到的一些问题和自己的解决方案. 在项目中,有时候会遇到这么一种情况,我们 ...
- 万万没想到! logger.info() 还能导致线上故障?
事故代码 直入主题,生产环境日志级别为warn,请看如下这行代码: LOGGER.info("the DTO info: {}", JSON.toJSONString(DTO)); ...
- Python logging调用Logger.info方法的处理过程
本次分析一下Logger.info的流程 1. Logger.info源码: def info(self, msg, *args, **kwargs):"""Log 'm ...
- python logger
python--logger模块 import logging #常用日志模块 #Logger:即 Logger Main Class,是我们进行日志记录时创建的对象,我们可以调用它的方法传入日志模板 ...
- log4j.logger java_log4j的多logger记录日志的简明使用
日志,应该是一个应用软件的基础功能之一. 使用java语言,必然会使用一个日志库,我使用的是log4j的日志库.网上不少文章都有介绍,但是结合logger的不同功能介绍以及示例介绍的清楚的不多,至少我 ...
- python logging logger
[Python 模块] logging模块.Logger类 - ihoneysec - 博客园
最新文章
- 深度学习人脸特征点自动定位综述
- 八大排序算法(理论和动态图)
- 页面传值的方法 和JSON与字符串和对象之间的转换
- 【CodeForces - 1152C 】Neko does Maths(数学数论,lcm,gcd性质)
- DOM 元素以及内容的增删改
- 利用LDA主题模型的生成过程仿真数据
- 在weblogic上配置数据源
- winform 文件上传限制文件类型及文件大小
- TM1640显示屏驱动IC驱动6位数码管实例
- 社群编码识别黑灰产攻击实践
- 285个地级市的灯光数据(1992-2013年)和雾霾(PM2.5)数据(1998-2016年)
- mysql 1048_MySQL Error 1048 奇遇记-阿里云开发者社区
- Java调用微信支付代码
- 学习SpringBoot:知乎超赞回答:Java如何进阶?分享面经
- 新媒体广告投放的知识要点解析
- MySQL 8.0 执行 insert 插入数据非常缓慢的问题及解决方法
- T100 genero report (GR) 凭证报表开发流程
- 用户在电商网站中购买成功了,那么它在微服务中经历了什么(转)
- python登录网易163邮箱,爬取邮件
- 2019计算机图形学会议SIGGRAPH上都有哪些新探索?沉浸式科技前沿