Android 如何优雅的打印日志
chinar4
8年前
<h2>1.介绍</h2> <p>Logger 是一款Android平台上的简单、优雅、强大的开源日志库。</p> <p>Logger提供了以下方法:</p> <ul> <li> <p>打印线程的信息</p> </li> <li> <p>打印类的信息</p> </li> <li> <p>打印方法的信息</p> </li> <li> <p>优雅的打印JSON数据</p> </li> <li> <p>优雅的打印换行符</p> </li> <li> <p>打印简洁的信息</p> </li> <li> <p>点击日志跳转至源码</p> </li> </ul> <p>感受下Logger打印的日志:</p> <p style="text-align:center"><img src="https://simg.open-open.com/show/6829b3d3342b84b917f53eb6ed16558d.png"></p> <p>JSON日志</p> <h2>2.简单使用</h2> <p>在app根目录的buil.gradle文件中加入依赖</p> <pre> <code class="language-java">compile 'com.orhanobut:logger:1.15'</code></pre> <p>和普通的Log一样,Logger支持五种级别的日志打印方法:</p> <pre> <code class="language-java">Logger.v(); Logger.d(); Logger.i(); Logger.w(); Logger.e();</code></pre> <p>还有一种不常用的方法:</p> <pre> <code class="language-java">// what a terrible failure // 可怕的失败,报告一个永远不可能发生的情况 Logger.wtf("Hello World!");</code></pre> <p>打印一条info级别的日志,默认的TAG是PRETTYLOGGER,看下效果:</p> <pre> <code class="language-java">Logger.i("Hello World!");</code></pre> <p style="text-align:center"><img src="https://simg.open-open.com/show/d6aaf6a09235742ba8dfd3b1fda1e0bd.png"></p> <p>INFO级别日志</p> <h2>3.打印更多类型的数据</h2> <p>Logger还支持打印JSON、XML、集合、数组。</p> <h2>打印JSON</h2> <pre> <code class="language-java">String JSON_CONTENT = "{\"weatherinfo\":{\"city\":\"北京\",\"cityid\":\"101010100\"," + "\"temp\":\"-2\",\"WD\":\"西北风\",\"WS\":\"3级\",\"SD\":\"241%\",\"WSE\":\"3\"," + "\"time\":\"10:61\",\"isRadar\":\"1\",\"Radar\":\"JC_RADAR_AZ9010_JB\"}}"; Logger.json(JSON_CONTENT);</code></pre> <p style="text-align:center"><img src="https://simg.open-open.com/show/6829b3d3342b84b917f53eb6ed16558d.png" alt="Android 如何优雅的打印日志" width="780" height="404"></p> <p style="text-align:center">JSON日志</p> <h2>打印XML</h2> <pre> <code class="language-java">String XML_CONTENT = "<resp><city>北京</city><updatetime>16:10</updatetime><wendu>23</wendu>" + "<fengli>3级</fengli><shidu>19%</shidu><fengxiang>北风</fengxiang></resp>"; Logger.xml(XML_CONTENT);</code></pre> <p style="text-align:center"><img src="https://simg.open-open.com/show/025b79cd8cdf19b5bde12a17db6e710f.png"></p> <p style="text-align:center">XML日志</p> <h2>打印集合</h2> <pre> <code class="language-java">List<String> list = new ArrayList<>(); list.add("Hello"); list.add("World"); Logger.d(list);</code></pre> <p style="text-align: center;"><img src="https://simg.open-open.com/show/862cc5112f93603a56ad2f7c3fd30a1c.png"></p> <p style="text-align:center">集合日志</p> <p>打印数组的方式和集合类似,就不再举例了。</p> <h2>4.打印异常</h2> <pre> <code class="language-java">try { int a = 6 / 0; } catch (Exception e) { Logger.e(e, "Exception"); }</code></pre> <p style="text-align: center;"><img src="https://simg.open-open.com/show/baad0a49f1af8cc605c99138f70fb6e0.png"></p> <p style="text-align:center">异常日志</p> <h2>5.格式化字符串</h2> <p>Logger还提供了格式化字符串的功能。</p> <pre> <code class="language-java">Logger.d("Hello %s%s", "World", "!");</code></pre> <p style="text-align: center;"><img src="https://simg.open-open.com/show/336721b33b7600d9f87b909ab51e6f8a.png"></p> <p style="text-align:center">格式化字符串</p> <h2>6.自定义打印TAG</h2> <h2>自定义全局TAG</h2> <p>新建一个Application类LoggerDemoApplication,在onCreate方法中调用Logger.init(TAG)。</p> <pre> <code class="language-java">public class LoggerDemoApplication extends Application { private String TAG = "LoggerDemo"; @Override public void onCreate() { super.onCreate(); Logger.init(TAG); } }</code></pre> <p>在AndroidManifest中加入application的name属性。</p> <pre> <code class="language-java"><application android:name=".LoggerDemoApplication" ... </application></code></pre> <p style="text-align: center;"><img src="https://simg.open-open.com/show/279b9ee4596e916c4d175e762f303fec.png"></p> <p style="text-align:center">全局TAG</p> <h2>自定义单个TAG</h2> <pre> <code class="language-java">Logger.t("MyTag").d("Hello World!");</code></pre> <p style="text-align: center;"><img src="https://simg.open-open.com/show/0ed483d690a6beee6d0bf964a162006d.png"></p> <p style="text-align:center">单个TAG</p> <h2>7.关闭日志打印</h2> <p>在LoggerDemoApplication中,设置log的级别为NONE即可关闭日志打印。</p> <pre> <code class="language-java">Logger.init(TAG).logLevel(LogLevel.NONE);</code></pre> <h2>8.更多设置</h2> <pre> <code class="language-java">Logger .methodCount(3) // 设置打印方法栈的个数,默认是2 .hideThreadInfo() // 隐藏线程信息,默认显示 .methodOffset(2) // 设置调用堆栈的偏移值,默认是0 .logAdapter(new AndroidLogAdapter()); // 自定义Log适配器 }</code></pre> <p> </p> <p> </p> <p>来自:http://www.jianshu.com/p/89b05c0ffd39</p> <p> </p>