瀏覽代碼

日志方法修改

drake 2 年之前
父節點
當前提交
632e6898fd

+ 22 - 7
net/src/main/java/com/drake/net/Net.kt

@@ -22,7 +22,6 @@ import android.util.Log
 import com.drake.net.interfaces.ProgressListener
 import com.drake.net.request.*
 import com.drake.net.tag.NetTag
-import com.drake.net.utils.NetUtils
 
 object Net {
 
@@ -106,7 +105,7 @@ object Net {
      * @param tag 可以传递对象给Request请求, 一般用于在拦截器/转换器中进行针对某个接口行为判断
      * @param block 函数中可以配置请求参数
      */
-    fun trace(
+    fun error(
         path: String,
         tag: Any? = null,
         block: (UrlRequest.() -> Unit)? = null
@@ -245,7 +244,7 @@ object Net {
         NetConfig.runningCalls.forEach {
             val request = it.get()?.request() ?: return@forEach
             if (request.id == id) {
-                request.uploadListeners()?.remove(progressListener)
+                request.uploadListeners().remove(progressListener)
             }
         }
     }
@@ -274,7 +273,7 @@ object Net {
         NetConfig.runningCalls.forEach {
             val request = it.get()?.request() ?: return@forEach
             if (request.id == id) {
-                request.downloadListeners()?.remove(progressListener)
+                request.downloadListeners().remove(progressListener)
             }
         }
     }
@@ -284,11 +283,27 @@ object Net {
     //<editor-fold desc="日志">
     /**
      * 输出异常日志
-     * @see NetConfig.logTag
+     * @see NetConfig.debug
      */
+    @Deprecated("命名变更", ReplaceWith("Net.trace(t)"))
     fun printStackTrace(t: Throwable) {
-        if (NetConfig.logEnabled) {
-            Log.d(NetConfig.logTag, NetUtils.getStackTraceString(t))
+        debug(t)
+    }
+
+    /**
+     * 输出异常日志
+     * @param message 如果非[Throwable]则会自动追加代码位置(文件:行号)
+     * @see NetConfig.debug
+     */
+    fun debug(message: Any) {
+        if (NetConfig.debug) {
+            val adjustMessage = if (message is Throwable) {
+                message.stackTraceToString()
+            } else {
+                val occurred = Throwable().stackTrace.getOrNull(1)?.run { " (${fileName}:${lineNumber})" } ?: ""
+                message.toString() + occurred
+            }
+            Log.d(NetConfig.TAG, adjustMessage)
         }
     }
     //</editor-fold>

+ 18 - 19
net/src/main/java/com/drake/net/NetConfig.kt

@@ -18,14 +18,6 @@ package com.drake.net
 
 import android.annotation.SuppressLint
 import android.content.Context
-import com.drake.net.NetConfig.app
-import com.drake.net.NetConfig.converter
-import com.drake.net.NetConfig.dialogFactory
-import com.drake.net.NetConfig.errorHandler
-import com.drake.net.NetConfig.host
-import com.drake.net.NetConfig.logEnabled
-import com.drake.net.NetConfig.requestInterceptor
-import com.drake.net.NetConfig.runningCalls
 import com.drake.net.convert.NetConverter
 import com.drake.net.interceptor.RequestInterceptor
 import com.drake.net.interfaces.NetDialogFactory
@@ -39,15 +31,6 @@ import java.util.concurrent.ConcurrentLinkedQueue
 
 /**
  * Net的全局配置
- *
- * @property app 全局上下文, 一般执行[NetConfig.init]即可, 无需手动赋值
- * @property host 全局的域名或者ip(baseUrl)
- * @property runningCalls Net中正在运行的请求Call
- * @property requestInterceptor 请求拦截器
- * @property logEnabled 是否启用日志
- * @property dialogFactory 全局加载框
- * @property errorHandler 全局错误处理器, 会覆盖onError/onStateError
- * @property converter 全局数据转换器
  */
 @SuppressLint("StaticFieldLeak")
 object NetConfig {
@@ -64,10 +47,26 @@ object NetConfig {
         }
 
     /** 是否启用日志 */
-    var logEnabled = true
+    @Deprecated("命名变更", ReplaceWith("NetConfig.debug"))
+    var logEnabled
+        get() = debug
+        set(value) {
+            debug = value
+        }
+
+    /** 是否启用日志 */
+    var debug = true
+
+    /** 网络异常日志的标签 */
+    @Deprecated("命名变更", ReplaceWith("NetConfig.TAG"))
+    var logTag
+        get() = TAG
+        set(value) {
+            TAG = value
+        }
 
     /** 网络异常日志的标签 */
-    var logTag = "NET-LOG"
+    var TAG = "NET_LOG"
 
     /** 运行中的请求 */
     var runningCalls: ConcurrentLinkedQueue<WeakReference<Call>> = ConcurrentLinkedQueue()

+ 1 - 1
net/src/main/java/com/drake/net/interfaces/NetDeferred.kt

@@ -9,7 +9,7 @@ internal class NetDeferred<M>(private val deferred: Deferred<M>) : Deferred<M> b
 
     override suspend fun await(): M {
         // 追踪到网络请求异常发生位置
-        val occurred = Throwable().stackTrace.getOrNull(1)?.run { " At (${fileName}:${lineNumber})" }
+        val occurred = Throwable().stackTrace.getOrNull(1)?.run { " (${fileName}:${lineNumber})" }
         return try {
             deferred.await()
         } catch (e: Exception) {

+ 2 - 2
net/src/main/java/com/drake/net/interfaces/NetErrorHandler.kt

@@ -39,7 +39,7 @@ interface NetErrorHandler {
             else -> NetConfig.app.getString(R.string.net_other_error)
         }
 
-        Net.printStackTrace(e)
+        Net.debug(e)
         TipUtils.toast(message)
     }
 
@@ -55,7 +55,7 @@ interface NetErrorHandler {
             is RequestParamsException,
             is ResponseException,
             is NullPointerException -> onError(e)
-            else -> Net.printStackTrace(e)
+            else -> Net.debug(e)
         }
     }
 }

+ 1 - 1
net/src/main/java/com/drake/net/log/LogRecorder.kt

@@ -192,7 +192,7 @@ object LogRecorder {
                     try {
                         Thread.sleep(5L)
                     } catch (e: InterruptedException) {
-                        Net.printStackTrace(e)
+                        Net.debug(e)
                     }
                 }
                 val data = bundle.getString(KEY_VALUE) ?: "null"

+ 12 - 0
net/src/main/java/com/drake/net/okhttp/OkHttpBuilder.kt

@@ -20,11 +20,23 @@ import javax.net.ssl.X509TrustManager
 
 /**
  * 开启日志
+ * @param enabled 是否启用日志
  */
+@Deprecated("命名变更", ReplaceWith("setDebug(enabled)"))
 fun OkHttpClient.Builder.setLog(enabled: Boolean) = apply {
     NetConfig.logEnabled = enabled
 }
 
+/**
+ * 开启日志
+ * @param enabled 是否启用日志
+ * @param tag 日志标签
+ */
+fun OkHttpClient.Builder.setDebug(enabled: Boolean, tag: String = NetConfig.TAG) = apply {
+    NetConfig.debug = enabled
+    NetConfig.TAG = tag
+}
+
 /**
  * Net要求经过该函数处理创建特殊的OkHttpClient
  */

+ 1 - 2
net/src/main/java/com/drake/net/scope/AndroidScope.kt

@@ -96,12 +96,11 @@ open class AndroidScope(
         return this
     }
 
-
     /**
      * 错误处理
      */
     open fun handleError(e: Throwable) {
-        Net.printStackTrace(e)
+        Net.debug(e)
     }
 
     open fun cancel(cause: CancellationException? = null) {

+ 2 - 2
net/src/main/java/com/drake/net/utils/Fastest.kt

@@ -54,7 +54,7 @@ suspend fun <T> fastest(
                 val allFail = listDeferred.all { it.isCancelled }
                 if (allFail) deferred.completeExceptionally(e) else {
                     if (e !is CancellationException) {
-                        Net.printStackTrace(e)
+                        Net.debug(e)
                     }
                 }
             }
@@ -100,7 +100,7 @@ suspend fun <T, R> fastest(
                 val allFail = listDeferred.all { it.deferred.isCancelled }
                 if (allFail) deferred.completeExceptionally(e) else {
                     if (e !is CancellationException) {
-                        Net.printStackTrace(e)
+                        Net.debug(e)
                     }
                 }
             }

+ 1 - 1
net/src/main/java/com/drake/net/utils/FileUtils.kt

@@ -35,7 +35,7 @@ fun File.md5(): String? {
         for (b in md5) stringBuilder.append(String.format("%02X", b))
         return stringBuilder.toString().toLowerCase(Locale.ROOT)
     } catch (e: IOException) {
-        Net.printStackTrace(e)
+        Net.debug(e)
     }
     return null
 }

+ 3 - 3
net/src/main/java/com/drake/net/utils/Https.kt

@@ -62,7 +62,7 @@ internal fun prepareKeyManager(bksFile: InputStream?, password: String?): Array<
         kmf.init(clientKeyStore, password.toCharArray())
         return kmf.keyManagers
     } catch (e: Exception) {
-        Net.printStackTrace(e)
+        Net.debug(e)
     }
     return null
 }
@@ -83,7 +83,7 @@ internal fun prepareTrustManager(vararg certificates: InputStream?): Array<Trust
             try {
                 certStream?.close()
             } catch (e: IOException) {
-                Net.printStackTrace(e)
+                Net.debug(e)
             }
         }
         // 我们创建一个默认类型的TrustManagerFactory
@@ -93,7 +93,7 @@ internal fun prepareTrustManager(vararg certificates: InputStream?): Array<Trust
         // 通过tmf获取TrustManager数组,TrustManager也会信任keyStore中的证书
         return tmf.trustManagers
     } catch (e: Exception) {
-        Net.printStackTrace(e)
+        Net.debug(e)
     }
     return null
 }

+ 0 - 29
net/src/main/java/com/drake/net/utils/NetUtils.kt

@@ -4,9 +4,6 @@ import android.content.Context
 import android.net.ConnectivityManager
 import android.net.NetworkCapabilities
 import android.os.Build
-import java.io.PrintWriter
-import java.io.StringWriter
-import java.net.UnknownHostException
 
 /**
  * 是否处于联网中
@@ -25,30 +22,4 @@ fun Context.isNetworking(): Boolean {
     } else {
         connectivityManager.activeNetworkInfo?.isConnected == true
     }
-}
-
-object NetUtils {
-    /**
-     * 返回异常堆栈日志字符串
-     * 如果tr为null则返回空字符串
-     */
-    internal fun getStackTraceString(tr: Throwable?): String {
-        if (tr == null) {
-            return ""
-        }
-        // This is to reduce the amount of log spew that apps do in the non-error
-        // condition of the network being unavailable.
-        var t = tr
-        while (t != null) {
-            if (t is UnknownHostException) {
-                return t.message ?: ""
-            }
-            t = t.cause
-        }
-        val sw = StringWriter()
-        val pw = PrintWriter(sw)
-        tr.printStackTrace(pw)
-        pw.flush()
-        return sw.toString()
-    }
 }

+ 2 - 2
sample/src/main/java/com/drake/net/sample/base/App.kt

@@ -23,8 +23,8 @@ import com.drake.net.NetConfig
 import com.drake.net.interceptor.LogRecordInterceptor
 import com.drake.net.interceptor.RequestInterceptor
 import com.drake.net.okhttp.setConverter
+import com.drake.net.okhttp.setDebug
 import com.drake.net.okhttp.setDialogFactory
-import com.drake.net.okhttp.setLog
 import com.drake.net.okhttp.setRequestInterceptor
 import com.drake.net.request.BaseRequest
 import com.drake.net.sample.BR
@@ -49,7 +49,7 @@ class App : Application() {
             readTimeout(30, TimeUnit.SECONDS)
             writeTimeout(30, TimeUnit.SECONDS)
 
-            setLog(BuildConfig.DEBUG) // LogCat异常日志
+            setDebug(BuildConfig.DEBUG) // LogCat异常日志
             addInterceptor(LogRecordInterceptor(BuildConfig.DEBUG)) // 添加日志记录器
             setRequestInterceptor(object : RequestInterceptor { // 添加请求拦截器
                 override fun interceptor(request: BaseRequest) {