Discourse はログをどこに保存し、表示しますか?

Discourse の問題やエラーのトラブルシューティングを行う際には、ログを確認することが重要です。ここでは、ログの場所と内容を一覧で示します。

サイトのドメイン

UI に表示される管理ログ

Discourse の管理パネルには、いくつかのログ形式が含まれています。

Logster ウェブ UI

すべての Discourse インスタンスには、GUI ログビューアが付属しています。場所は次のとおりです: https://=DOMAIN=/logs

注意: ホストされているプランをご利用の場合、このページは非表示になっている可能性があります。その場合は、このような問題が発生した際はサポートにご連絡ください!

フォーラムで謎の 500 エラーを調査している場合は、必ず最初にここを確認する必要があります!

エラー行を選択すると、詳細が表示されます。ここで Meta の env および backtrace タブの内容の提供を求められることがあります。

Rails / Pitchfork ログ

Ruby on Rails には、ディスクに書き込まれる非常に冗長なログが含まれています。さらに、Web サーバーの pitchfork (unicorn のフォーク) もディスクにログを記録します。

アクセスするには:

cd /var/discourse
./launcher enter app
cd /shared/log/rails

このフォルダーには、「production.log」と「unicorn.stderr.log」のほか、「ローテーションされた」ログファイルが含まれています。less production.log などの標準的な Unix ツールを使用して確認できます。

このフォルダーは、コンテナに入ることなく、/var/discourse/shared/standalone/log/rails としても利用できます。

NGINX ログ

場合によっては、NGINX ログにいくつかの追加情報が含まれていることがあります。これらは次の場所にあります。

cd /var/discourse
./launcher enter app
cd /var/log/nginx

access.log および error.log ファイルと、多数のローテーションされた圧縮ファイルがあります。less access.log.2.gz を実行すると、ログファイルが自動的に解凍されて表示されます。

このディレクトリは、ホスト側では /var/discourse/shared/standalone/log/var-log/nginx としても利用できます。

Redis ログ

Redis ログを確認する必要があることは非常に稀ですが、必要な場合は、コンテナ内では /var/log/redis に、ホスト側では /var/discourse/shared/standalone/log/var-log/redis に格納されます。最新のログエントリは、そのディレクトリの current ファイルにあります。

PostgreSQL ログ

データベースサーバーのログを確認する必要がある場合は、コンテナ内では /var/log/postgres に、ホスト側では /var/discourse/shared/standalone/log/var-log/postgres にあります。最新のエントリは、そのディレクトリの current ファイルにあります。

「いいね!」 46

Is there any option/console in admin ui to run these command and get logs in web? I do not see any option.

「いいね!」 2

I have also found this log to be useful:

./launcher logs app

This shows any errors during the build process if you don’t know which app to look at.

「いいね!」 7

I don’t have a postgres folder in /var/log/postgres or /var/discourse/shared/standalone/log/var-log/postgres. Is there some configuration I need to make to generate DB logs?

「いいね!」 1

If You’re using a 2 container install or external postgres, then the logs will not be there.

For 2 container install, the logs should be in the
/var/discourse/shared/data/log/var-log/postgres

For external postgres, your logs should be with the managed db provider.

「いいね!」 4

プラグインがリビルド中に障害を引き起こした場合、プラグイン内の特定のエラーを示すログはどこにありますか?

「いいね!」 1

それらは、再構築を実行したターミナルウィンドウ内にあります。ターミナルに十分なスクロールバックがない場合は、再構築中に注意を払う必要があります(または、ロールバックを増やす方法、あるいは後で見つけられる場所にそれを出力する方法を検索する必要があります)。

「いいね!」 1

プレースホルダーがリストで機能しないようです。

「いいね!」 1

これらのログのどれに個人データが含まれており、どれくらいの期間保持されるのかを把握しようとしています。どうやら:

  • メールログはデフォルトで90日間保持されます
  • RailsログにはIPが含まれており、7日後にローテーションされます(\* logrotate.dより)
  • NGINXについても同様です
  • スタッフ/スクリーニングには個人データが含まれている可能性があり、永久に保持されます

他に何か見落としていますか?

エラーログ(discourse.example.com/logs)にも個人データが含まれている可能性はありますか?もしそうなら、それらはローテーションされますか?
コンテナログに個人情報が含まれる可能性はありますか?(つまり、`./launcher logs app`など)これらはDocker経由で手動でローテーションを設定する必要があると思います。