日志记录 - Kotlin SDK
版本 1.8.0 中的新增内容。
在开发或调试应用程序时,您可以设置或更改应用程序的日志级别。 您可能希望根据开发需求更改日志级别以记录不同数量的数据。
注意
本页介绍如何设置 Realm 记录器,该记录器已添加到 Realm Kotlin SDK v1.8.0 中。 这取代了在早期版本的 Realm Kotlin SDK 中设置同步客户端日志级别的方法。 有关如何在早期版本中设置同步客户端日志级别的信息,请参阅设置客户端日志级别 - Kotlin SDK。
设置 Realm 日志级别
您可以使用全局 RealmLog单例设立应用程序的日志级别。 您可以设立 RealmLog.level
属性设置为LogLevel枚举中的条目,以指定要接收的数据级别。 如果日志级别优先级等于或高于RealmLog.level
中定义的优先级, Realm会记录该事件。
您可以在应用程序生命周期中的任何点从此全局单例更改日志级别。此行为与已弃用的同步客户端日志级别不同,后者必须在打开同步域之前设置,并且无法更改。
// Set a log level using the global RealmLog singleton RealmLog.level = LogLevel.TRACE // Access your app and use realm val app: App = App.create(YOUR_APP_ID) // Replace this with your App ID val user = app.login(Credentials.emailPassword(email, password)) val config = SyncConfiguration.Builder(user, setOf(Toad::class)) .initialSubscriptions { realm -> add(realm.query<Toad>("name == $0", "name value"), "sync subscription") } .build() val realm = Realm.open(config) // You can change the log level at any point in your app's lifecycle as needed RealmLog.level = LogLevel.INFO
默认,所有日志都会Go到因系统而异的默认系统记录器:
Android 日志记录到 Logcat。
Java虚拟机(JVM)日志记录到 stdout。
MacOS 日志记录到 NSLog。
iOS 日志记录到 NSLog。
提示
要在开发应用程序时诊断和排除错误,请将日志级别设置为debug
或trace
。 对于生产部署,请降低日志级别以提高性能。
设置自定义记录器
您可以创建一个实现RealmLogger接口的自定义记录器。 您可能希望自定义日志记录,以在开发、测试或调试期间添加特定标签或设立特定日志级别。
class MyLogger() : RealmLogger { override val tag: String = "CUSTOM_LOG_ENTRY" override val level: LogLevel = LogLevel.DEBUG override fun log( level: LogLevel, throwable: Throwable?, message: String?, vararg args: Any? ) { println(message) // Custom handling } }
然后,您可以初始化自定义记录器并调用RealmLog.add() 函数,将其设置为应用程序的记录器。
您还可以删除特定记录器或删除所有记录器,包括系统记录器。
// Set an instance of a custom logger val myCustomLogger = MyLogger() RealmLog.add(myCustomLogger) // You can remove a specific logger RealmLog.remove(myCustomLogger) // Or remove all loggers, including the default system logger RealmLog.removeAll()