Overview
--logpath オプションまたは systemLog.path 設定で使用すると、mongod および mongos インスタンスは、すべてのアクティビティと操作のライブ アカウントをログファイルに報告します。アクティビティ データをログファイルに報告する場合、デフォルトでは、MongoDB は logRotate コマンドに応答して、または mongod または mongos プロセスがオペレーティング システムから SIGUSR1 シグナルを受信した場合にのみログをローテーションします。サーバー ログと監査ログは、logRotate コマンドを使用して、一緒にまたは個別にローテーションできます。
MongoDB の標準的なログ ローテーション アプローチでは、現在のログファイルをアーカイブし、新しいログファイルを作成します。具体的には、mongod または mongos インスタンスにより、ISODate 形式の UTC タイムスタンプが現在のログファイル名に追加され、ファイル名が変更されます。さらに、このインスタンスにより新しいログファイルが開き、古いログファイルが閉じて、すべての新しいログエントリが新しいログファイルに送信されます。
また、systemLog.logRotate または --logRotate を reopen に設定することで、MongoDB を Linux/Unix の logrotate ユーティリティをサポートするように構成できます。reopen を使用すると、mongod または mongos によりログファイルが閉じられた後、ローテーション前に別のプロセスによってファイルの名前が変更されたと想定して、同じ名前のログファイルが再度開かれます。
最後に、--syslog オプションを使用して、ログデータを syslog に送信するよう mongod を構成できます。この場合、代わりのログ ローテーション ツールを利用できます。
注意
ログファイルをローテーションするには、次のいずれかの手順を実行する必要があります。
MongoDB の
logRotateコマンドを実行するLinux/Unix の
logrotateユーティリティを実行する
このページ後半の例を参照してください。
Tip
ロギングについて詳しくは、「プロセスのログ」セクションを参照してください。
デフォルトのログ ローテーション動作
デフォルトでは、MongoDB では --logRotate rename の動作が使用されます。rename を使用すると、mongod または mongos により現在のログファイル名に UTC タイムスタンプが追加され、ファイル名が変更されます。また、新しいログファイルが開かれ、古いログファイルが閉じられて、すべての新しいログエントリが新しいログファイルに送信されます。
mongodインスタンスを起動します。
mongod -v --logpath /var/log/mongodb/server1.log
また、--logRotate rename を明示的に指定できます。
ログファイルのローテーション
ログファイルをローテーションするには、以下のように mongosh: の admin データベースから logRotate コマンドを発行します。
db.adminCommand( { logRotate : "server" } )
監査が有効な場合、必要に応じてサーバー ログと監査ログの両方を同時にローテーションするために、1 を server ではなく logRotate に指定できます。監査ログは、--logRotate 設定に従ってサーバー ログと同じ方法でローテーションされ
注意
このコマンドは認証されたレプリカセットのアービタでは実行できません。
新しいログファイルの表示
新しいログファイルを一覧表示して、新しく作成されたログを表示します。
ls /var/log/mongodb/server1.log*
2 つのログファイルがリストされます。server1.log は mongod または mongos により再度ログファイルが開かれたときに作成されたログファイルで、server1.log.<timestamp> は名前が変更された元のログファイルです。
ログファイルをローテーションしても、ローテーション済みの「古い」ログファイルは変更されません。ログをローテーションすると、server1.log ファイルの名前がタイムスタンプを含む名前に変更され、新しい空の server1.log ファイルが新しく入力されるログをすべて受け取ります。
を使用したログ ローテーション --logRotate reopen
--logRotate reopen を使用してログをローテーションすると、Linux/Unix の一般的なログ ローテーションの動作通り、ログファイルが閉じ、再度開きます。
mongodの動作を指定して、reopen--logRotate インスタンスを起動 します。
mongod -v --logpath /var/log/mongodb/server1.log --logRotate reopen --logappend
--logappendオプションは、--logRotate reopen. とともに使用する必要があります。
Syslog のログ ローテーション
syslog ログ ローテーションでは、ログデータはファイルに書き込まれる代わりに、mongod により syslog に送信されます。
MongoDB は、 syslogへのログ メッセージにコンポーネントを含めます。
オプションでmongod --syslogインスタンスを起動
mongod --syslog
--logpath を含めないでください。--syslog がログ データを syslog に送信するよう mongod に指示するため、--logpath を指定するとエラーが発生します。
メッセージを syslog に記録するときに使用する機能レベルを指定するには、--syslogFacility オプションか、systemLog.syslogFacility 構成設定を使用します。
ログ ローテーションの強制 SIGUSR1
Linux および UNIX を基盤としたシステムでは、SIGUSR1 シグナルを使用して 1 つのプロセスのログをローテーションできます。
たとえば、実行中の mongod インスタンスのプロセス ID(PID)が 2200 の場合、次のコマンドは Linux 上でそのインスタンスのログファイルをローテーションします。
kill -SIGUSR1 2200