public final class StackTraceElement implements Serializable { public StackTraceElement(String declaringClass, String methodName, String fileName, int lineNumber) { throw new RuntimeException("Stub!"); } // 获得文件名 public String getFileName() { throw new RuntimeException("Stub!"); } // 获得行号 public int getLineNumber() { throw new RuntimeException("Stub!"); } // 获得所在类的类名 public String getClassName() { throw new RuntimeException("Stub!"); } // 获得所在方法的方法名 public String getMethodName() { throw new RuntimeException("Stub!"); } // // 获得所在方法是否是 native 方法 public boolean isNativeMethod() { throw new RuntimeException("Stub!"); } ... }
object LogUtil { private val isDebug = BuildConfig.DEBUG
private fun generateTag(): String { val caller = Throwable().stackTrace[2] var tag = "%s.%s(L:%d)" var callerClazzName = caller.className callerClazzName = callerClazzName.substring(callerClazzName.lastIndexOf(".") + 1) tag = String.format( Locale.CHINA, tag, callerClazzName, caller.methodName, caller.lineNumber ) val customTagPrefix = "h_log" tag = if (TextUtils.isEmpty(customTagPrefix)) tag else "$customTagPrefix:$tag" return tag }
fun d(content: Any?) { if (!isDebug || content == null) { return } val tag = generateTag() Log.d(tag, content.toString()) } ... }
近期评论