概要
Couchbase LiteのロギングAPIについて解説します。
ログ出力には、次のふたつのストリームがあります。
ファイルベースロギング
ファイルベースロギングでは、ログはログレベルでフィルタリングされた個別のログファイルに書き込まれます。
また、各ログレベルは個別のポリシーを持ちます。
コンソールベースロギング
コンソールロギングを使用すると、問題の調査のために通常のファイルベースのロギングに干渉することなく、特定のデバッグシナリオに合わせて診断出力を調整できます。
カスタムロギング
Loggerインターフェースを使用してカスタムロギングクラスを実装できます。
コンソールベースロギング
コンソールログはファイルログとは独立しています。そのため、ファイルログストリームを損なうことなく変更を加えることができます。
コンソールログは、デフォルトで有効になっています。デフォルト設定を変更するには、Database.log
のメソッドを使用して必要な値を設定します。
次の例では、コンソールベースのログのドメインとレベルを定義しています。
Database.log.getConsole().setDomain(LogDomain.ALL_DOMAINS);
Database.log.getConsole().setLevel(LogLevel.VERBOSE);
指定したLogDomainのログを無効にするには、LogLevelをNone
に設定します。
ファイルベースロギング
ファイルベースのログはデフォルトで無効になっています。
フォーマット
利用可能なファイルベースのログ形式は、以下の通りです。
- バイナリ: ストレージとパフォーマンスに最も効率的です。ファイルベースログのデフォルトフォーマットです。
- 平文(プレインテキスト)
構成
コンソールログと同様に、ログレベルを設定できます。
ファイルベースのロギングでは、LogFileConfiguration
クラスのプロパティを使用して以下を指定することができます。
-
ログファイルを保存するディレクトリへのログファイルパス
-
ログファイルフォーマット: デフォルトはバイナリです。必要に応じて、プレーンテキストのログを出力できます。
-
ログファイルの最大サイズ(バイト)。この制限を超えると、新しいログファイルが開始されます。
-
ローテーションされたログファイルを保持する最大数
以下は、上記設定の適用例です。
final File path = context.getCacheDir();
LogFileConfiguration LogCfg =
new LogFileConfiguration(path.toString()); ①
LogCfg.setMaxSize(10240); ②
LogCfg.setMaxRotateCount(5); ③
LogCfg.setUsePlainText(true); ④
Database.log.getFile().setConfig(LogCfg);
Database.log.getFile().setLevel(LogLevel.INFO); ⑤
①ログファイルディレクトリを設定します。
②ログファイルの最大サイズ(バイト)を設定します。
③最大回転数をデフォルト(1)から5に変更します(この場合、5つのローテーションされたログファイルとアクティブなログファイルの6つのファイルが一度に存在する可能性があります)。
④フォーマットをプレインテキストに変更します。
⑤ログ出力レベルをデフォルト(「警告」)から「情報」に変更します。
カスタムロギング
Couchbase Liteでは、コールバック関数を登録してCouchbase Liteログメッセージを受信できます。メッセージは、外部のログフレームワークを使用してログに記録できます。
これを行うには、アプリはLogger
インターフェースを実装する必要があります。加えて、log.setCustom()
を使用してカスタムロギングを有効にする必要があります。
ロガーインターフェースの実装
ここでは、ロガーインターフェイスを実装するコードを紹介します。
class LogTestLogger implements Logger {
@NonNull
private final LogLevel level;
public LogTestLogger(@NonNull LogLevel level) { this.level = level; }
@NonNull
@Override
public LogLevel getLevel() { return level; }
@Override
public void log(@NonNull LogLevel level, @NonNull LogDomain domain, @NonNull String message) {
}
}
カスタムログの有効化
Database.log.setCustom(new LogTestLogger(LogLevel.WARNING));
ここでは、カスタムロガーを「警告」のレベルに設定しています。
バイナリログのデコード
cbl-log
ツールを使用して、バイナリログファイルをデコードできます。
macOS
wget
を使用してcbl-logツールをダウンロードします。
wget https://packages.couchbase.com/releases/couchbase-lite-log/3.0.0-beta02/couchbase-lite-log-3.0.0-beta02-macos.zip
zipファイルを解凍し、bin
ディレクトリへ移動し、cbl-log
を実行します。
cbl-log logcat LOGFILE <OUTPUT_PATH>
CentOS
wget
を使用してcbl-logツールをダウンロードします。
wget https://packages.couchbase.com/releases/couchbase-lite-log/3.0.0-beta02/couchbase-lite-log-3.0.0-beta02-centos.zip
zipファイルを解凍し、bin
ディレクトリへ移動し、cbl-log
を実行します。
cbl-log logcat LOGFILE <OUTPUT_PATH>
Windows
PowerShellを使用してcbl-logツールをダウンロードします。
Invoke-WebRequest https://packages.couchbase.com/releases/couchbase-lite-log/3.0.0-beta02/couchbase-lite-log-3.0.0-beta02-windows.zip -OutFile couchbase-lite-log-3.0.0-beta02-windows.zip
zipファイルを解凍し、bin
ディレクトリへ移動し、cbl-log.exe
を実行します。
cbl-log.exe logcat LOGFILE <OUTPUT_PATH>
関連情報