Logutil used in Android development

Source: Internet
Author: User
<span id="Label3"></p><p><p>Log is often used in the development process, one way we often write is to customize a Logutil tool class</p></p><pre class="prettyprint"><code class=" hljs java"> <span class="hljs-keyword"><span class="hljs-keyword">Private</span></span> <span class="hljs-keyword"><span class="hljs-keyword">Static</span></span> <span class="hljs-keyword"><span class="hljs-keyword">Boolean</span></span>LOGV =<span class="hljs-keyword"><span class="hljs-keyword">true</span></span>;<span class="hljs-keyword"><span class="hljs-keyword">Private</span></span> <span class="hljs-keyword"><span class="hljs-keyword">Static</span></span> <span class="hljs-keyword"><span class="hljs-keyword">Boolean</span></span>LOGD =<span class="hljs-keyword"><span class="hljs-keyword">true</span></span>;<span class="hljs-keyword"><span class="hljs-keyword">Private</span></span> <span class="hljs-keyword"><span class="hljs-keyword">Static</span></span> <span class="hljs-keyword"><span class="hljs-keyword">Boolean</span></span>Logi =<span class="hljs-keyword"><span class="hljs-keyword">true</span></span>;<span class="hljs-keyword"><span class="hljs-keyword">Private</span></span> <span class="hljs-keyword"><span class="hljs-keyword">Static</span></span> <span class="hljs-keyword"><span class="hljs-keyword">Boolean</span></span>LOGW =<span class="hljs-keyword"><span class="hljs-keyword">true</span></span>;<span class="hljs-keyword"><span class="hljs-keyword">Private</span></span> <span class="hljs-keyword"><span class="hljs-keyword">Static</span></span> <span class="hljs-keyword"><span class="hljs-keyword">Boolean</span></span>LOGE =<span class="hljs-keyword"><span class="hljs-keyword">true</span></span>;<span class="hljs-keyword"><span class="hljs-keyword"></span> public</span> <span class="hljs-keyword"><span class="hljs-keyword">Static</span></span> <span class="hljs-keyword"><span class="hljs-keyword">void</span></span> <span class="hljs-title"><span class="hljs-title">v</span></span>(string tag, String Mess) {<span class="hljs-keyword"><span class="hljs-keyword">if</span></span>(logv) {LOG.V (tag, mess);} }<span class="hljs-keyword"><span class="hljs-keyword"></span> public</span> <span class="hljs-keyword"><span class="hljs-keyword">Static</span></span> <span class="hljs-keyword"><span class="hljs-keyword">void</span></span> <span class="hljs-title"><span class="hljs-title">D</span></span>(string tag, String Mess) {<span class="hljs-keyword"><span class="hljs-keyword">if</span></span>(logd) {LOG.D (tag, mess);} }<span class="hljs-keyword"><span class="hljs-keyword"></span> public</span> <span class="hljs-keyword"><span class="hljs-keyword">Static</span></span> <span class="hljs-keyword"><span class="hljs-keyword">void</span></span> <span class="hljs-title"><span class="hljs-title">I</span></span>(string tag, String Mess) {<span class="hljs-keyword"><span class="hljs-keyword">if</span></span>(logi) {LOG.I (tag, mess);} }<span class="hljs-keyword"><span class="hljs-keyword"></span> public</span> <span class="hljs-keyword"><span class="hljs-keyword">Static</span></span> <span class="hljs-keyword"><span class="hljs-keyword">void</span></span> <span class="hljs-title"><span class="hljs-title">W</span></span>(string tag, String Mess) {<span class="hljs-keyword"><span class="hljs-keyword">if</span></span>(logw) {LOG.W (tag, mess);} }<span class="hljs-keyword"><span class="hljs-keyword"></span> public</span> <span class="hljs-keyword"><span class="hljs-keyword">Static</span></span> <span class="hljs-keyword"><span class="hljs-keyword">void</span></span> <span class="hljs-title"><span class="hljs-title">e</span></span>(string tag, String Mess) {<span class="hljs-keyword"><span class="hljs-keyword">if</span></span>(LOGE) {LOG.E (tag, mess);} }</code></pre><p><p>Such a tool class can be used to classify the log, when the application is published selectively closed log, more Convenient.<br>The problem is that, like using log directly, you need to define a tag, and the usual way is to define a static string constant tag in each class that needs to be hit log, assigning the class Name. If you forget to modify the tag during refactoring, you may be confused when you look at the log. Of course, There are a lot of people who will be easy to use System.out.println (str) directly, Output.<br>The first two days of watching volleylog, learning a new method,</p></p><pre class="prettyprint"><code class=" hljs cs"> <span class="hljs-keyword"><span class="hljs-keyword">Private</span></span> <span class="hljs-keyword"><span class="hljs-keyword">Static</span></span>String<span class="hljs-title"><span class="hljs-title">Gettag</span></span>() {stacktraceelement[] trace =<span class="hljs-keyword"><span class="hljs-keyword">New</span></span>Throwable (). fillinstacktrace (). getstacktrace (); String Callingclass =<span class="hljs-string"><span class="hljs-string">""</span></span>;<span class="hljs-keyword"><span class="hljs-keyword"></span> for</span>(<span class="hljs-keyword"><span class="hljs-keyword">int</span></span>i =<span class="hljs-number"><span class="hljs-number">2</span></span>; I < trace.length; I++) {class<?> clazz = Trace[i].getclass ();<span class="hljs-keyword"><span class="hljs-keyword">if</span></span>(!clazz.equals (LOGUTIL.CLASS)) {callingclass = Trace[i].getclassname (); Callingclass = callingclass.substring (callingclass. lastIndexOf (<span class="hljs-string"><span class="hljs-string">'. '</span></span>) +<span class="hljs-number"><span class="hljs-number">1</span></span>);<span class="hljs-keyword"><span class="hljs-keyword"></span> break</span>; } }<span class="hljs-keyword"><span class="hljs-keyword">return</span></span>callingclass; }</code></pre><p><p>This method can get directly to the Caller's class Name. Use the Following:</p></p><pre class="prettyprint"><code class=" hljs cs"> <span class="hljs-keyword"><span class="hljs-keyword"></span> public</span> <span class="hljs-keyword"><span class="hljs-keyword">Static</span></span> <span class="hljs-keyword"><span class="hljs-keyword">void</span></span> <span class="hljs-title"><span class="hljs-title">v</span></span>(String Mess) {<span class="hljs-keyword"><span class="hljs-keyword">if</span></span>(logv) {LOG.V (gettag (), mess);} }<span class="hljs-keyword"><span class="hljs-keyword"></span> public</span> <span class="hljs-keyword"><span class="hljs-keyword">Static</span></span> <span class="hljs-keyword"><span class="hljs-keyword">void</span></span> <span class="hljs-title"><span class="hljs-title">D</span></span>(String Mess) {<span class="hljs-keyword"><span class="hljs-keyword">if</span></span>(logd) {LOG.D (gettag (), mess);} }<span class="hljs-keyword"><span class="hljs-keyword"></span> public</span> <span class="hljs-keyword"><span class="hljs-keyword">Static</span></span> <span class="hljs-keyword"><span class="hljs-keyword">void</span></span> <span class="hljs-title"><span class="hljs-title">I</span></span>(String Mess) {<span class="hljs-keyword"><span class="hljs-keyword">if</span></span>(logi) {LOG.I (gettag (), mess);} }<span class="hljs-keyword"><span class="hljs-keyword"></span> public</span> <span class="hljs-keyword"><span class="hljs-keyword">Static</span></span> <span class="hljs-keyword"><span class="hljs-keyword">void</span></span> <span class="hljs-title"><span class="hljs-title">W</span></span>(String Mess) {<span class="hljs-keyword"><span class="hljs-keyword">if</span></span>(logw) {LOG.W (gettag (), mess);} }<span class="hljs-keyword"><span class="hljs-keyword"></span> public</span> <span class="hljs-keyword"><span class="hljs-keyword">Static</span></span> <span class="hljs-keyword"><span class="hljs-keyword">void</span></span> <span class="hljs-title"><span class="hljs-title">e</span></span>(String Mess) {<span class="hljs-keyword"><span class="hljs-keyword">if</span></span>(LOGE) {LOG.E (gettag (), mess);} }</code></pre><p><p>So there is no need to define tags in the class.</p></p><p><p>When debugging a program, we often print some information, including the method Name/line number, and the following method can save the Trouble:</p></p><pre class="prettyprint"><code class=" hljs perl">private static String buildmessage (string msg) {stacktraceelement[] trace = new Throwable (). fillinstacktrace () . Getstacktrace (); String<span class="hljs-keyword"><span class="hljs-keyword">Caller</span></span>=<span class="hljs-string"><span class="hljs-string">""</span></span>;<span class="hljs-keyword"><span class="hljs-keyword"></span> for</span>(<span class="hljs-keyword"><span class="hljs-keyword">int</span></span>i =<span class="hljs-number"><span class="hljs-number">2</span></span>; I < Trace.<span class="hljs-keyword"><span class="hljs-keyword">length</span></span>; I++) {class<?> clazz = Trace[i].getclass ();<span class="hljs-keyword"><span class="hljs-keyword">if</span></span>(!clazz.equals (LOGUTIL.CLASS)) {<span class="hljs-keyword"><span class="hljs-keyword">Caller</span></span>= Trace[i].getmethodname ();<span class="hljs-keyword"><span class="hljs-keyword"></span> break</span>; } }<span class="hljs-keyword"><span class="hljs-keyword">return</span></span>String.<span class="hljs-keyword"><span class="hljs-keyword">format</span></span>(locale.us,<span class="hljs-string"><span class="hljs-string">"[<span class="hljs-variable">%d</span>] <span class="hljs-variable">%s</span>: <span class="hljs-variable">%s</span>"</span></span>, Thread.CurrentThread (). getId (),<span class="hljs-keyword"><span class="hljs-keyword">Caller</span></span>, msg); }</code></pre><p><p>Here's How to use It:</p></p><pre class="prettyprint"><code class=" hljs cs"> <span class="hljs-keyword"><span class="hljs-keyword"></span> public</span> <span class="hljs-keyword"><span class="hljs-keyword">Static</span></span> <span class="hljs-keyword"><span class="hljs-keyword">void</span></span> <span class="hljs-title"><span class="hljs-title">v</span></span>(String Mess) {<span class="hljs-keyword"><span class="hljs-keyword">if</span></span>(logv) {LOG.V (gettag (), buildmessage (mess));} }<span class="hljs-keyword"><span class="hljs-keyword"></span> public</span> <span class="hljs-keyword"><span class="hljs-keyword">Static</span></span> <span class="hljs-keyword"><span class="hljs-keyword">void</span></span> <span class="hljs-title"><span class="hljs-title">D</span></span>(String Mess) {<span class="hljs-keyword"><span class="hljs-keyword">if</span></span>(logd) {LOG.D (gettag (), buildmessage (mess));} }<span class="hljs-keyword"><span class="hljs-keyword"></span> public</span> <span class="hljs-keyword"><span class="hljs-keyword">Static</span></span> <span class="hljs-keyword"><span class="hljs-keyword">void</span></span> <span class="hljs-title"><span class="hljs-title">I</span></span>(String Mess) {<span class="hljs-keyword"><span class="hljs-keyword">if</span></span>(logi) {LOG.I (gettag (), buildmessage (mess));} }<span class="hljs-keyword"><span class="hljs-keyword"></span> public</span> <span class="hljs-keyword"><span class="hljs-keyword">Static</span></span> <span class="hljs-keyword"><span class="hljs-keyword">void</span></span> <span class="hljs-title"><span class="hljs-title">W</span></span>(String Mess) {<span class="hljs-keyword"><span class="hljs-keyword">if</span></span>(logw) {LOG.W (gettag (), buildmessage (mess));} }<span class="hljs-keyword"><span class="hljs-keyword"></span> public</span> <span class="hljs-keyword"><span class="hljs-keyword">Static</span></span> <span class="hljs-keyword"><span class="hljs-keyword">void</span></span> <span class="hljs-title"><span class="hljs-title">e</span></span>(String Mess) {<span class="hljs-keyword"><span class="hljs-keyword">if</span></span>(LOGE) {LOG.E (gettag (), buildmessage (mess));} }</code></pre><p><p>It is convenient to print log every time, directly type: logutil.v (msg);<br>Do not need to tube tag, method name, also thread ID and so on information</p></p><p><p>One more step is to format the contents of the MSG</p></p><pre class="prettyprint"><pre class="prettyprint"><code class=" hljs javascript">buildMessage(<span class="hljs-built_in">String</span><span class="hljs-built_in">Object</span>... args)</code></pre></pre><p><p>finally, If a large number of log such a hit will affect the performance of the program, so this method is only convenient to use during debugging, when publishing, you can put the debug log off.</p></p> <p style="font-size:12px;"><p style="font-size:12px;">Copyright Notice: This article for Bo Master original article, without Bo Master permission not Reproduced.</p></p> <p><p>Logutil used in Android development</p></p></span>

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.