getLog
定義
getLog
getLog
は、直近の1024がログに記録されたmongod
イベントを返す管理コマンドです。getLog
は、 ログファイルからログデータを読み取りmongod
ません 。代わりに、ログに記録されたmongod
イベントの RAM キャッシュからデータを読み取ります。getLog
を実行するには、db.adminCommand()
メソッドを使用します。getLog
はエスケープされた緩和 JSON v 2.0のログデータを返します 形式。 以前は、ログデータはプレーンテキストとして返されていました。
互換性
このコマンドは、次の環境でホストされている配置で使用できます。
MongoDB Atlas はクラウドでの MongoDB 配置のためのフルマネージド サービスです
注意
このコマンドは、すべての MongoDB Atlas クラスターでサポートされています。すべてのコマンドに対する Atlas のサポートについては、 「サポートされていないコマンド」を参照してください。
MongoDB Enterprise: サブスクリプションベースの自己管理型 MongoDB バージョン
MongoDB Community: ソースが利用可能で、無料で使用できる自己管理型の MongoDB のバージョン
構文
このコマンドの構文は、次のとおりです。
db.adminCommand( { getLog: <value> } )
コマンドフィールド
getLog
に指定できる値は次のとおりです。
値 | 説明 |
---|---|
* | getLog コマンドに使用可能な値のリストを返します。 |
global | 最近のすべてのログ エントリーの結合された出力を返します。 |
startupWarnings | 現在のプロセスが開始されたときから MongoDB のログからエラーまたは警告が含まれている可能性のあるログエントリを返します。 mongod が警告なしで開始された場合、このフィルターは空の配列を返す可能性があります。 |
注意
メッセージ タイプのこの分類は非推奨になったため、getLog
コマンドは rs
値を受け入れなくなりました。代わりに、ログ メッセージは常にコンポーネントによって識別されるようになりました(レプリケーション メッセージの REPLを含む)。コンポーネント フィールドでフィルタリングするログ解析の例については、「コンポーネントによるフィルタリング」を参照してください。
出力
*
を指定した場合、コマンドは他の許容値の名前を含むドキュメントを返します。
それ以外の場合、コマンドは次のフィールドを含むドキュメントを返します。
totalLinesWritten
ログ イベントの数を含むフィールドlog
ログ イベントの配列を含むフィールドステータスとタイムスタンプ情報を含む
db.adminCommand()
応答ドキュメント。
動作
行の切り捨て
getLog
では、 1024文字を超えるイベントが切り捨てられます。
文字のエスケープ
getLog
はエスケープされた緩和 JSON v 2.0のログデータを返します 形式(以下のエスケープ シーケンスを使用して、ログ出力を有効な JSON としてレンダリングします)。
表現された文字 | エスケープ シーケンス |
---|---|
引用符( " ) | \" |
Backslash ( \ ) | \\ |
バックスペース( 0x08 ) | \b |
フォームフィード( 0x0C ) | \f |
改行( 0x0A ) | \n |
キャリッジ リターン( 0x0D ) | \r |
Horizontal tab ( 0x09 ) | \t |
上記に記載されていない制御文字は \uXXXX
でエスケープされます(XXXX は 16 進数で表された Unicode コードポイントです)。UTF-8 エンコーディングが無効なバイトは、\ufffd
で表される Unicode の置換文字で置き換えられます。
フィルタリング
Within mongosh
getLog
出力をフィルタリングして、結果をより読みやすくしたり、特定の基準に一致させたりすることができます。
次の操作は、log
フィールド(最近のすべてのログ イベントの配列を含む)のみを出力し、各ログ メッセージから文字のエスケープを削除します。
db.adminCommand( { getLog:'global'} ).log.forEach(x => {print(x)})
getLog
この操作では、MongoDB と同じ形式でlog file
出力が表示されます。
注意
getLog
は直近の1024がログに記録されたmongod
イベントのみを表示し、MongoDB log file
の代わりにはなりません。
の外部での の使用<a class=\" \" href=\" \" title=\" \"><svg xmlns=\" \" width=\" \" height=\" \" fill=\" \" viewbox=\" \" class=\" \" role=\" \" aria-label=\" \"><path fill=\" \" d=\" \"> <path fill=\" \" d=\" \">mongosh
jq
MongoDB 構造化ログを使用する場合、サードパーティの jqコマンドライン ユーティリティ はログ エントリーを簡単かつきれいに印刷したり、キーに基づく強力なマッチングとフィルタリングを実行したりできる便利なツールです。
jq
はオープンソースの JSON パーサーで、Linux、Windows、macOS で利用できます。
jq
getLog
の出力で--eval
を使用するには、mongosh
に オプションを使用する必要があります。次の操作では、 jq
を使用してREPLコンポーネントでフィルタリングし、レプリケーションに関連するログ メッセージのみを表示します。
mongosh --quiet --eval "db.adminCommand( { getLog:'global'} ).log.forEach(x => {print(x)})" | jq -c '. | select(.c=="REPL")'
必要に応じて、必要な接続固有のパラメータをmongosh
に提供してください。たとえば、 --host
や--port
などです。
jq
を使用したログ出力のフィルタリングのその他の例については、 「 構造化ログ メッセージの解析」を参照してください。 リンクされた各例えに表示されるjq
構文は、マイナーな調整を伴う上記のmongo --eval
操作で使用できます。 たとえば、次の構文は、リンクされた「ユニーク メッセージのカウント」の例をgetLog
で使用するように調整したものです。
mongosh --quiet --eval "db.adminCommand( { getLog:'global'} ).log.forEach(x => {print(x)})" | jq -r ".msg" | sort | uniq -c | sort -rn | head -10
例
使用可能なログ フィルターの取得
次の操作はmongosh
から実行され、 getLog
に渡すために使用可能なログフィルタを返します。
db.adminCommand( { getLog: "*" } )
この操作を実行すると次のドキュメントが返されます。
{ "names" : [ "global", "startupWarnings" ], "ok" : 1 }
ログから最近のイベントを取得
次の操作はmongosh
から実行され、 mongod
の最新のglobal
イベントを検索します。
db.adminCommand( { getLog : "global" } )
この操作は、次のようなドキュメントを返します。
{ "totalLinesWritten" : <num>, "log" : [ "{\"t\":{\"$date\":\"2020-05-19T19:10:48.871+00:00\"},\"s\":\"I\", \"c\":\"STORAGE\", \"id\":4615611, \"ctx\":\"initandlisten\",\"msg\":\"MongoDB starting\",\"attr\":{\"pid\":12345,\"port\":27001,\"dbPath\":\"/var/lib/mongo\",\"architecture\":\"64-bit\",\"host\":\"server1.example.com\"}}", "{\"t\":{\"$date\":\"2020-05-19T19:10:48.871+00:00\"},\"s\":\"I\", \"c\":\"CONTROL\", \"id\":23403, \"ctx\":\"initandlisten\",\"msg\":\"Build Info\",\"attr\":{\"buildInfo\":{\"version\":\"4.4.0\",\"gitVersion\":\"328c35e4b883540675fb4b626c53a08f74e43cf0\",\"openSSLVersion\":\"OpenSSL 1.1.1c FIPS 28 May 2019\",\"modules\":[],\"allocator\":\"tcmalloc\",\"environment\":{\"distmod\":\"rhel80\",\"distarch\":\"x86_64\",\"target_arch\":\"x86_64\"}}}}", "{\"t\":{\"$date\":\"2020-05-19T19:10:48.871+00:00\"},\"s\":\"I\", \"c\":\"CONTROL\", \"id\":51765, \"ctx\":\"initandlisten\",\"msg\":\"Operating System\",\"attr\":{\"os\":{\"name\":\"CentOS Linux release 8.0.1905 (Core) \",\"version\":\"Kernel 4.18.0-80.11.2.el8_0.x86_64\"}}}", "{\"t\":{\"$date\":\"2020-05-19T19:10:48.871+00:00\"},\"s\":\"I\", \"c\":\"CONTROL\", \"id\":21951, \"ctx\":\"initandlisten\",\"msg\":\"Options set by command line\",\"attr\":{\"options\":{\"config\":\"/etc/mongod.conf\",\"net\":{\"bindIp\":\"127.0.0.1\",\"port\":27001},\"processManagement\":{\"fork\":true,\"timeZoneInfo\":\"/usr/share/zoneinfo\"},\"replication\":{\"replSetName\":\"repl-shard1\"},\"sharding\":{\"clusterRole\":\"shardsvr\"},\"storage\":{\"dbPath\":\"/var/lib/mongo\",\"journal\":{\"enabled\":true},\"wiredTiger\":{\"engineConfig\":{\"cacheSizeGB\":0.1}}},\"systemLog\":{\"destination\":\"file\",\"logAppend\":true,\"path\":\"/var/log/mongodb/mongod.log\"}}}}", "{\"t\":{\"$date\":\"2020-05-19T19:10:48.873+00:00\"},\"s\":\"I\", \"c\":\"STORAGE\", \"id\":22270, \"ctx\":\"initandlisten\",\"msg\":\"Storage engine to use detected by data files\",\"attr\":{\"dbpath\":\"/var/lib/mongo\",\"storageEngine\":\"wiredTiger\"}}", "{\"t\":{\"$date\":\"2020-05-19T19:10:48.873+00:00\"},\"s\":\"I\", \"c\":\"STORAGE\", \"id\":22315, \"ctx\":\"initandlisten\",\"msg\":\"wiredtiger_open config\",\"attr\":{\"config\":\"create,cache_size=102M,session_max=33000,eviction=(threads_min=4,threads_max=4),config_base=false,statistics=(fast),log=(enabled=true,archive=true,path=journal,compressor=snappy),file_manager=(close_idle_time=100000,close_scan_interval=10,close_handle_minimum=250),statistics_log=(wait=0),verbose=[recovery_progress,checkpoint_progress,compact_progress],\"}}", "{\"t\":{\"$date\":\"2020-05-19T19:10:58.877+00:00\"},\"s\":\"I\", \"c\":\"CONNPOOL\", \"id\":22576, \"ctx\":\"ReplicaSetMonitor-TaskExecutor\",\"msg\":\"Connecting\",\"attr\":{\"hostAndPort\":\"server1.example.com:27001\"}}", "{\"t\":{\"$date\":\"2020-05-19T19:10:58.877+00:00\"},\"s\":\"I\", \"c\":\"CONNPOOL\", \"id\":22576, \"ctx\":\"ReplicaSetMonitor-TaskExecutor\",\"msg\":\"Connecting\",\"attr\":{\"hostAndPort\":\"server2.example.com:27001\"}}", "{\"t\":{\"$date\":\"2020-05-19T19:10:58.877+00:00\"},\"s\":\"I\", \"c\":\"CONNPOOL\", \"id\":22576, \"ctx\":\"ReplicaSetMonitor-TaskExecutor\",\"msg\":\"Connecting\",\"attr\":{\"hostAndPort\":\"server3.example.com:27001\"}}", "{\"t\":{\"$date\":\"2020-05-19T19:10:58.877+00:00\"},\"s\":\"I\", \"c\":\"CONNPOOL\", \"id\":22576, \"ctx\":\"ReplicaSetMonitor-TaskExecutor\",\"msg\":\"Connecting\",\"attr\":{\"hostAndPort\":\"server4.example.com:27001\"}}", "{\"t\":{\"$date\":\"2020-05-19T19:10:58.877+00:00\"},\"s\":\"I\", \"c\":\"CONNPOOL\", \"id\":22576, \"ctx\":\"ReplicaSetMonitor-TaskExecutor\",\"msg\":\"Connecting\",\"attr\":{\"hostAndPort\":\"server5.example.com:27001\"}}", "{\"t\":{\"$date\":\"2020-05-19T19:10:58.877+00:00\"},\"s\":\"I\", \"c\":\"CONNPOOL\", \"id\":22576, \"ctx\":\"ReplicaSetMonitor-TaskExecutor\",\"msg\":\"Connecting\",\"attr\":{\"hostAndPort\":\"server6.example.com:27001\"}}", "{\"t\":{\"$date\":\"2020-05-19T19:10:58.877+00:00\"},\"s\":\"I\", \"c\":\"NETWORK\", \"id\":23015, \"ctx\":\"listener\",\"msg\":\"Listening on\",\"attr\":{\"address\":\"/tmp/mongodb-27001.sock\"}}", "{\"t\":{\"$date\":\"2020-05-19T19:10:58.877+00:00\"},\"s\":\"I\", \"c\":\"NETWORK\", \"id\":23015, \"ctx\":\"listener\",\"msg\":\"Listening on\",\"attr\":{\"address\":\"127.0.0.1\"}}", "{\"t\":{\"$date\":\"2020-05-19T19:10:58.877+00:00\"},\"s\":\"I\", \"c\":\"NETWORK\", \"id\":23016, \"ctx\":\"listener\",\"msg\":\"Waiting for connections\",\"attr\":{\"port\":27001,\"ssl\":\"off\"}}", "{\"t\":{\"$date\":\"2020-05-19T19:15:10.392+00:00\"},\"s\":\"I\", \"c\":\"NETWORK\", \"id\":22943, \"ctx\":\"listener\",\"msg\":\"connection accepted\",\"attr\":{\"remote\":\"127.0.0.1:35724\",\"sessionId\":67,\"connectionCount\":30}}", "{\"t\":{\"$date\":\"2020-05-19T19:15:10.393+00:00\"},\"s\":\"I\", \"c\":\"NETWORK\", \"id\":51800, \"ctx\":\"conn67\",\"msg\":\"client metadata\",\"attr\":{\"remote\":\"127.0.0.1:35724\",\"client\":\"conn67\",\"doc\":{\"application\":{\"name\":\"MongoDB Shell\"},\"driver\":{\"name\":\"MongoDB Internal Client\",\"version\":\"4.4.0\"},\"os\":{\"type\":\"Linux\",\"name\":\"CentOS Linux release 8.0.1905 (Core) \",\"architecture\":\"x86_64\",\"version\":\"Kernel 4.18.0-80.11.2.el8_0.x86_64\"}}}}" ], "ok" : 1, "$gleStats" : { "lastOpTime" : Timestamp(<ts>), "electionId" : ObjectId(<id>) }, "lastCommittedOpTime" : Timestamp(<ts>), "$configServerState" : { "opTime" : { "ts" : Timestamp(<ts>), "t" : NumberLong(8) } }, "$clusterTime" : { "clusterTime" : Timestamp(<ts>), "signature" : { "hash" : BinData(<bin>), "keyId" : NumberLong(0) } }, "operationTime" : Timestamp(<ts>) }