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>