バージョン 1.8.0 の新機能。
アプリケーションの開発またはデバッグ時に、アプリのログ レベルを設定または変更できます。 開発ニーズに応じて、ログ レベルを変更して、異なる量のデータをログに記録することをお勧めします。
注意
このページでは、Realm Kotlin SDK v1.8.0 で追加された Realm ロガーを設定する方法を説明します。 これにより、Realm Kotlin SDK の以前のバージョンでの同期クライアントのログ レベルの設定が上書きされます。 以前のバージョンで同期クライアントのログ レベルを設定する方法については、「 クライアント ログ レベルの設定 - Kotlin SDK 」を参照してください。
Realm ログレベルの設定
グローバルな RealmLog単一の を使用してアプリのログレベルを設定できます。 受信するデータのレベルを指定するには、 RealmLog.levelプロパティをLogLevel列挙のエントリに設定します。 ログレベルの優先順位がRealmLog.levelで定義された優先順位以上の場合、Realm はイベントをログに記録します。
このグローバル 単調な からアプリのライフサイクル中にいつでもログ レベルを変更できます。 この動作は、非推奨の同期クライアント ログ レベルとは異なります。このログは、同期済み 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されます。
Logcat への Android ログ。
stdout への JVM ログ。
MacOS のログを DNSLog に記録します。
iOS のログをNSLog に記録します。
Tip
アプリケーションの開発中にエラーを診断してトラブルシューティングを行うには、ログ レベルを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()