代码
import android.util.Log
/**
* Android通用Logger工具,在此处可以对log进行控制。如开启/关闭
*/
// TODO: internal 是kt的安全限制符号,类似public 等等
internal class Logger {
companion object {
private const val SDK_TAG = "wb_demo"
// 可以加个开关控制。根据编译版本来修改该值
private const val ENABLE_LOG = true
fun d(tag: String?, msg: String) {
// 1、通过Android系统api Log输出到控制台
Log.d(wrapTag(tag), msg)
// 2、通过ZegoDocsSDK,写入文件
}
fun i(tag: String?, msg: String) {
Log.i(wrapTag(tag), msg)
}
fun w(tag: String?, msg: String) {
Log.w(wrapTag(tag), msg)
}
fun e(tag: String?, msg: String) {
Log.e(wrapTag(tag), msg)
}
/**
* 所有log加上统一的前缀
*/
private fun wrapTag(tag: String?): String {
return SDK_TAG + tag
}
/**
* 往sdk写的logMsg,tag 和 msg 直接拼接在一起
*/
private fun wrapSdkLogMsg(tag: String, msg: String): String {
return tag + msg
}
}
}
其中internal
是一个可见修饰符。区别如下:
如果你不指定任何可见性修饰符,默认为 public,这意味着你的声明将随处可见;
如果你声明为 private,它只会在声明它的文件内可见;
如果你声明为 internal,它会在相同模块内随处可见;
protected 不适用于顶层声明。
其中特别强调一下模块
:
可见性修饰符
internal
意味着该成员只在相同模块内可见。更具体地说, 一个模块是编译在一起的一套 Kotlin 文件:
如下:
一个 IntelliJ IDEA 模块;
一个 Maven 项目;
一个 Gradle 源集(例外是 test 源集可以访问 main 的 internal 声明);
一次 Ant 任务执行所编译的一套文件。
可见性修饰符-kotlin中文