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

Open WebUIログ記録の理解 🪵

ログ記録は、デバッグ、モニタリング、Open WebUIの動作を理解する上で不可欠です。このガイドでは、ブラウザクライアント(フロントエンド)とアプリケーションサーバー/バックエンドの両方でのログ記録の仕組みを説明します。

🖥️ ブラウザクライアントのログ記録(フロントエンド)

フロントエンド開発とデバッグのために、Open WebUIは標準のブラウザコンソールログ記録を利用します。つまり、ウェブブラウザの組み込み開発者ツール内でログを直接確認することができます。

ブラウザログへのアクセス方法:

  1. 開発者ツールを開く: 多くのブラウザで開発者ツールを開くには、次のように操作します:

    • Open WebUIページ上の任意の場所で右クリックし、「検証」または「要素を調べる」を選択します。
    • F12(macOSの場合はCmd+Opt+I)を押します。
  2. 「コンソール」タブに移動: 開発者ツールパネル内で「コンソール」タブを見つけてクリックします。

ブラウザログの種類:

Open WebUIは主にJavaScriptの console.log() をクライアント側のログ記録に使用しています。コンソールには次のようなメッセージが表示されます:

  • 情報メッセージ: アプリケーションの一般的なフローと状態。
  • 警告: 潜在的な問題や重大ではないエラー。
  • エラー: 機能に影響を及ぼす可能性がある問題。

ブラウザ固有の開発者ツール:

異なるブラウザでは開発者ツールが若干異なりますが、どのブラウザもJavaScriptログを表示するためのコンソールを提供しています。有名なブラウザのドキュメントへのリンクを以下に示します:

⚙️ アプリケーションサーバー/バックエンドのログ記録(Python)

Open WebUIのバックエンドはPythonの組み込みloggingモジュールを使用して、サーバー側のイベントや情報を記録します。これらのログは、サーバーの動作を理解し、エラーを診断し、パフォーマンスを監視するために重要です。

主要な概念:

  • Pythonのloggingモジュール: Open WebUIは標準のPython loggingライブラリを活用しています。Pythonのログ記録に精通している場合、このセクションは分かりやすいでしょう。(詳細情報については、Python Logging ドキュメントをご覧ください。)
  • コンソール出力: デフォルトでは、バックエンドのログはコンソール(標準出力)に送られ、ターミナルやDockerコンテナのログで確認可能です。
  • ログ記録レベル: ログ記録レベルによってログの詳細度が制御されます。これを構成することで、Open WebUIの表示情報の詳細度を調整できます。

🚦 ログ記録レベルの説明

Pythonのログ記録は、ログメッセージの深刻度に応じて階層的にレベルを使用します。以下は、最も深刻なものから順に並べたレベルの内訳です:

レベル数値値説明使用ケース
CRITICAL50アプリケーションの終了を招く可能性がある重大なエラー壊滅的な失敗、データ破損。
ERROR40問題を示すエラーだが、アプリケーションはまだ動作する可能性あり。回復可能なエラー、失敗した操作。
WARNING30調査が必要な潜在的な問題や予期しない状況。廃止予定警告、リソース制約。
INFO20アプリケーションの動作に関する一般的な情報メッセージ起動メッセージ、重要なイベント、通常の操作フロー。
DEBUG10開発者向けの詳細なデバッグ情報関数呼び出し、変数値、詳細な実行手順。
NOTSET0すべてのメッセージが記録される。 (設定がない場合、通常はWARNINGがデフォルト)。特定のデバッグのためにすべてを捕捉する場合に役立つ。

デフォルトレベル: Open WebUIのデフォルトのログ記録レベルはINFOです。

🌍 グローバルログ記録レベル(GLOBAL_LOG_LEVEL

GLOBAL_LOG_LEVEL 環境変数を使用して、Open WebUIバックエンド全体のグローバルログ記録レベルを変更できます。これにより、全体的なログの詳細度を最も簡単に制御できます。

動作の仕組み:

GLOBAL_LOG_LEVELを設定すると、Pythonのルートロガーが構成され、Open WebUI内のすべてのロガーや、一部のlogging.basicConfigを使用するサードパーティライブラリにも影響を与えます。この設定はlogging.basicConfig(force=True)を使用しており、既存のルートロガー構成を上書きします。

例: DEBUGに設定する場合

  • Dockerパラメータ:

    --env GLOBAL_LOG_LEVEL="DEBUG"
  • Docker Compose (docker-compose.yml):

    environment:
    - GLOBAL_LOG_LEVEL=DEBUG

影響: GLOBAL_LOG_LEVELDEBUGに設定すると、開発やトラブルシューティングに役立つ詳細な情報を含む、最も詳細なログが生成されます。運用環境では、ログ量を減らすためにINFOWARNINGがより適切な場合があります。

⚙️ アプリ/バックエンド固有のロギングレベル

より細かい制御のために、Open WebUIでは特定のバックエンドコンポーネントのロギングレベルを設定する環境変数を提供しています。ロギングは開発中の作業ですが、これらの環境変数を使用してある程度の制御を行うことが可能です。これにより、アプリケーションの異なる部分のロギングを細かく調整できます。

利用可能な環境変数:

環境変数名コンポーネント/モジュール説明
AUDIO_LOG_LEVEL音声処理音声文字起こし(faster-whisper)、音声合成(TTS)、および音声処理関連のログ。
COMFYUI_LOG_LEVELComfyUI統合ComfyUIとの連携に関するログ。この統合を使用する場合に適用されます。
CONFIG_LOG_LEVEL設定管理Open WebUIの設定ファイルの読み込みと処理に関連するログ。
DB_LOG_LEVELデータベース操作(Peewee)Peewee ORM(オブジェクトリレーショナルマッパー)を使用したデータベース操作のログ。
IMAGES_LOG_LEVEL画像生成(AUTOMATIC1111/Stable Diffusion)特にAUTOMATIC1111 Stable Diffusion統合を使用した画像生成タスクのログ。
MAIN_LOG_LEVELメインアプリケーション実行(ルートロガー)メインアプリケーションエントリポイントとルートロガーからのログ。
MODELS_LOG_LEVELモデル管理言語モデル(LLMs)の読み込み、管理、認証を含む操作に関連するログ。
OLLAMA_LOG_LEVELOllamaバックエンド統合Ollamaバックエンドとの通信や連携に関するログ。
OPENAI_LOG_LEVELOpenAI API統合OpenAI API(例:GPTモデル)との連携に関するログ。
RAG_LOG_LEVELRetrieval-Augmented Generation(RAG)RAGパイプライン(ChromaベクターデータベースやSentence-Transformersを含む)に関するログ。
WEBHOOK_LOG_LEVEL認証ウェブフック認証ウェブフック機能に関する拡張ログ。

使用方法:

GLOBAL_LOG_LEVELと同様に、これらの環境変数を設定できます(Dockerパラメータ、またはDocker Composeのenvironmentセクション)。例えば、Ollamaのやり取りに関する詳細なログを取得するには、次のように設定します。

environment:
- OLLAMA_LOG_LEVEL=DEBUG

重要な注意事項: GLOBAL_LOG_LEVELとは異なり、これらのアプリ固有の変数は、すべてのサードパーティモジュールのロギングには影響しない場合があります。主にOpen WebUIのコードベース内でのロギングを制御します。

これらのロギングメカニズムを理解し活用することで、Open WebUIインスタンスを効果的に監視、デバッグし、洞察を得ることができます。