0
0

More than 1 year has passed since last update.

Couchbase Lite 機能解説:ロギングAPI

Posted at

概要

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>

関連情報

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0