メインコンテンツまでスキップ

ログ出力

ログ出力は、以下のクラスで構成されます。

  • Logger ... ログを出力するAPIを提供するクラスです。LogFormatterTransportをインスタンス生成時に指定できます。
  • LogFormatter ... メッセージを出力する際のフォーマットを表すインタフェースです。
  • Transport ... ログの出力先を表すインタフェースです。コンソールやFirebase Crashlyticsを出力先とした実装を用意します。

ログ出力で提供される機能は以下のようになります。

ログレベルによるログの振り分け

以下のログのレベルを指定して出力を振り分けることができます。

  • トレース
  • デバッグ
  • 情報
  • 警告
  • エラー

ログレベルには上記の箇条書きの記載通りに順序があり、ロガーに設定したログレベルより、同じか下のレベルがログとして出力されます。 例えば、ロガーのログレベルにトレースを指定すると、すべてのログレベルが出力されます。 ログレベルに警告を指定すると、警告とエラーのみが出力されます。

エラー出力にはエラーコードの指定を必須としています。指定したエラーコード毎にクラッシュレポートがグルーピングされてFirebaseコンソールに表示されるので、エラーの問題究明に役立ちます。

ログ出力先の指定

ログの出力処理は、トランスポートで行われます。 ロガーの初期化で複数のトランスポートを指定することで複数の出力先に出力できます。

  import { createLogger } from 'bases'
import { SimpleLogFormatter, ConsoleTransport, FirebaseCrashlyticsTransport} from 'bases/Logger'
// ...
const formatter = new SimpleLogFormatter();
const consoleTransport = new ConsoleTransport();
const firebaseCrashlyticsTransport = new FirebaseCrashlyticsTransport();
// 初期化時に、コンソール出力とFirebase Crashlytics出力するトランスポートを渡す例
const log = createLogger({level: 'trace', formatter: formatter, transports: [consoleTransport, firebaseCrashlyticsTransport]});

Firebase Crashlyticsについて

アプリのクラッシュの原因究明は、ログが残っていないと困難になり得ます。 FirebaseCrashlyticsTransportでは、クラッシュ発生前のエラー情報を収集できます。 クラッシュ発生後の次のアプリ起動時にエラーのログ出力情報をFirebase Crashlyticsに送信します。

Firebase Crashlyticsの設定については、Firebase Crashlyticsの設定を参照してください。

ログのフォーマット

ロガーはフォーマッタを関連づけることができます。 フォーマッタでは、出力する内容をラベルをつけたり日時をつけたり加工できます。 SimpleLogFormatterでは以下の内容が出力されます。

  // Error以外の場合
// [<ログレベル>] <ログのメッセージ内容>
log.info("ロード処理完了")
// -> "[info] ロード処理完了"

なお、エラーレベルのログはフォーマッタによる主力内容の加工は行われません。