Menu Docs
Página inicial do Docs
/
Manual do MongoDB
/ / /

getLog

Nesta página

  • Sintaxe
  • Comportamento
  • Filtragem
  • Exemplos
getLog

getLog é um comando administrativo que retorna os eventos 1024 mongod registrados mais recentes. getLog não lê dados de registro do arquivo de log mongod . Em vez disso, ele lê dados de um cache de RAM de mongod eventos registrados. Para executar getLog, use o método db.adminCommand() .

getLog retorna dados de registro no formato Extended JSON v2.0 relaxado com escape. Anteriormente, os dados de registro retornavam como texto simples.

O comando getLog tem a seguinte sintaxe:

db.adminCommand( { getLog: <value> } )

Os valores possíveis para getLog são:

Valor
Descrição
*
Retorna uma lista dos valores disponíveis para o comando getLog.
global
Retorna a saída combinada de todas as entradas de log recentes.
startupWarnings
Retorna entradas de registro que podem conter erros ou avisos do registro do MongoDB de quando o processo atual foi iniciado. Se mongod foi iniciado sem avisos, esse filtro pode retornar uma array vazia.

Observação

O comando getLog não aceita mais o valor rs, pois essa categorização do tipo de mensagem foi preterida. Em vez disso, as mensagens de log agora são sempre identificadas por seu componente, incluindo REPL em mensagens de replicação. Consulte Filtragem por componente para ver exemplos de análise de logs que filtram o campo de componente.

Se especificado *, o comando retorna um documento com os nomes dos outros valores aceitáveis.

Caso contrário, o comando retorna um documento que inclui os seguintes campos:

  • totalLinesWritten campo que contém o número de eventos de log

  • log campo que contém uma array de eventos de log

  • Um documento de resposta db.adminCommand() contendo informações de status e data e hora.

getLog trunca todos os eventos que contiverem mais de 1024 caracteres.

getLog retorna dados de log no formato JSON v2.0 estendido no modo relaxado com escape, usando as seguintes sequências de escape para renderizar a saída do log como JSON válido:

Caractere representado
Sequência de fuga
Aspas (")
\"
Barra invertida (\)
\\
Backspace (0x08)
\b
Formfeed (0x0C)
\f
Newline (0x0A)
\n
Quebra de linha (0x0D)
\r
Aba horizontal (0x09)
\t

Os caracteres de controle não mencionados são representados como \uXXXX, sendo "XXXX" o ponto de código Unicode em formato hexadecimal. Bytes com codificação UTF-8 inválida são substituídos pelo caractere de substituição unicode representado por \ufffd.

getLog a saída pode ser filtrada para tornar os resultados mais legíveis ou para corresponder a critérios específicos.

A operação a seguir imprime apenas o campo log (que contém a array de todos os eventos de log recentes) e remove caracteres que escapam de cada mensagem de log:

db.adminCommand( { getLog:'global'} ).log.forEach(x => {print(x)})

Essa operação apresenta a saída getLog no mesmo formato que o log file do MongoDB.

Observação

O getLog mostra somente os 1024 eventos mongod registrados mais recentes e não substitui o MongoDB log file.

Ao trabalhar com o log estruturado do MongoDB, o utilitário de linha de comando jq de terceiros é uma ferramenta útil que possibilita a impressão bonita e fácil de entradas de log, além de correspondência e filtragem avançadas baseada em chaves.

jq é um analisador JSON de código aberto, e está disponível para Linux, Windows e macOS.

Para usar jq com a saída getLog, você deve usar a opção --eval para o mongosh. A operação a seguir usa jq para filtrar o componente REPL e apresentar apenas as mensagens de log associadas à replicação:

mongosh --quiet --eval "db.adminCommand( { getLog:'global'} ).log.forEach(x => {print(x)})" | jq -c '. | select(.c=="REPL")'

Certifique-se de fornecer quaisquer parâmetros específicos da conexão necessários para o mongosh, conforme necessário, como --host ou --port.

Consulte Analisar mensagens de registro estruturadas para obter mais exemplos de filtragem de saída de registro utilizando jq. A sintaxe jq apresentada em cada exemplo vinculado pode ser utilizada com a operação mongo --eval acima com mínimo ajuste. Por exemplo, a seguinte sintaxe adapta o exemplo "Contando mensagens únicas" vinculado para uso com getLog:

mongosh --quiet --eval "db.adminCommand( { getLog:'global'} ).log.forEach(x => {print(x)})" | jq -r ".msg" | sort | uniq -c | sort -rn | head -10

A operação a seguir, executada a partir de mongosh, retorna os filtros de log disponíveis para passá-los a getLog:

db.adminCommand( { getLog: "*" } )

A operação retorna o seguinte documento:

{ "names" : [ "global", "startupWarnings" ], "ok" : 1 }

A operação a seguir, executada a partir do mongosh, recupera os eventos global mais recentes para o mongod:

db.adminCommand( { getLog : "global" } )

A operação retorna um documento semelhante ao seguinte:

{
"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>)
}

Voltar

getCmdLineOpts

Próximo

hostInfo