<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                ## 解決方案 ### 2.1 消滅TAG 我們用TAG就是做定位,同時方便過濾無意義的log。那么索性把當前類名作為這樣一個TAG的標識。于是,在我們自定義的log類中就用如下代碼設置tag: ~~~ /** * @return 當前的類名(simpleName) */ private static String getClassName() { String result; StackTraceElement thisMethodStack = (new Exception()).getStackTrace()[2]; result = thisMethodStack.getClassName(); int lastIndex = result.lastIndexOf("."); result = result.substring(lastIndex + 1, result.length()); return result; } ~~~ 這樣我們就輕易的擺脫了tag的糾纏。 > 這個方法來自于豪哥的建議,這里感謝豪哥的意見。 ### 2.2 將Log簡化 有人說我們IDE不都有代碼提示了么,為啥還用一個L來做簡化。首先用L比log能更快的得到提示,輸入一個l.d就會直接顯示提示,并且不會和原本的log類混淆。其次就是調用更方便。簡化log這個東西太簡單了,直接自定義一個L類,用作Log的輸出即可。 ### 2.3 在終端能顯示當前類名并且增加超鏈 這個功能其實ide是支持的,只不過我們可以通過一些神奇的方法來做到更好的效果。下面就給出兩個可行的方法: ~~~ /** * @return 當前的類名(全名) */ private static String getClassName() { String result; StackTraceElement thisMethodStack = (new Exception()).getStackTrace()[1]; result = thisMethodStack.getClassName(); return result; } /** * log這個方法就可以顯示超鏈 */ private static String callMethodAndLine() { String result = "at "; StackTraceElement thisMethodStack = (new Exception()).getStackTrace()[1]; result += thisMethodStack.getClassName()+ "."; result += thisMethodStack.getMethodName(); result += "(" + thisMethodStack.getFileName(); result += ":" + thisMethodStack.getLineNumber() + ") "; return result; } ~~~ ### 2.4 讓log更加美觀 人們對美的追求真是無止境,更加美麗的log也能方便我們一下子區分什么是系統打印的,什么是我們自己應用打印的。做到這點也比較簡單,就是在輸出前做點字符串拼接的工作。 ~~~ private static final char TOP_LEFT_CORNER = '╔'; private static final char BOTTOM_LEFT_CORNER = '╚'; private static final char MIDDLE_CORNER = '╟'; private static final char HORIZONTAL_DOUBLE_LINE = '║'; private static final String DOUBLE_DIVIDER = "════════════════════════════════════════════"; private static final String SINGLE_DIVIDER = "────────────────────────────────────────────"; private static final String TOP_BORDER = "╔════════════════════════════════════════════════════════════════════════════════════════"; private static final String BOTTOM_BORDER = "╚════════════════════════════════════════════════════════════════════════════════════════"; private static final String MIDDLE_BORDER = "╟────────────────────────────────────────────────────────────────────────────────────────"; private static String TAG = "PRETTYLOGGER"; ~~~ 因為打印log也是消耗性能的,所以我建議最多只保留出現某些異常(這些異常輕于Exception)時打印的log,在調試時打印的log在提交代碼前請全部清除。 ### 2.5 讓log支持輸出object、map、list、array、jsonStr等對象 這個需求實現起來也比較容易,如果是簡單的POJO的對象,我們用反射得到對象的類變量,通過字符串拼接的方式最終輸出值。如果是map等數組結構,那么就用其內部的遍歷依次輸出值和內容。如果是json的字符串,就需要判斷json的`{}`,`[]`這樣的特殊字符進行換行處理。 ### 2.6 增加log自動化和強制開關 區分release和debug版本有系統自帶的BuildConfig.DEBUG變量,用這個就可以控制是否顯示log了。強制開關也很簡單,在log初始化的最后判斷強制開關是否打開,如果打開那么就覆蓋之前的顯示設置,直接顯示log。轉為代碼就是這樣: ~~~ public class BaseApplication extends Application { // 定義是否是強制顯示log的模式 protected static final boolean LOG = false; @Override public void onCreate() { super.onCreate(); L.init() // default PRETTYLOGGER or use just init() //.setMethodCount(2); // default 2 //.hideThreadInfo() // default shown .setMethodOffset(1); // default 0 // 在debug下,才顯示log L.init().setLogLevel(BuildConfig.DEBUG ? LogLevel.FULL : LogLevel.NONE); // 如果是強制顯示log,那么無論在什么模式下都顯示log if (BaseApplication.LOG) { L.init().setLogLevel(LogLevel.FULL); } } } ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看