Página inicial do Docs → Desenvolver aplicações → Manual do MongoDB
getLog
Definição
getLog
getLog
é um comando administrativo que retorna os eventosmongod
1024 registrados mais recentes.getLog
não lê dados de registro do arquivo de logmongod
. Em vez disso, ele lê dados de um cache de RAM demongod
eventos registrados. Para executargetLog
, use o métododb.adminCommand()
.getLog
retorna dados de registro no JSON estendido relaxado v2. Formato 0 . Anteriormente, os dados de registro eram retornados como texto simples.
Sintaxe
O comando tem a seguinte sintaxe:
db.adminCommand( { getLog: <value> } )
Campos de comando
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 esta categorização do tipo de mensagem foi descontinuada. Em vez disso, as mensagens de registro agora são sempre identificadas por seu componente , incluindo REPL para mensagens de replicação. Consulte Filtrando por componente para ver exemplos de análise de registros que filtram no campo de componente.
Saída
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 loglog
campo que contém uma array de eventos de logUm documento de resposta
db.adminCommand()
contendo informações de status e data e hora.
Comportamento
Truncamento de linha
getLog
trunca qualquer evento que contenha mais de 1024 caracteres.
Escape de caracteres
getLog
retorna dados de registro no JSON estendido relaxado v2. Formato 0 , usando as seguintes sequências de escape para renderizar a saída de registro 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
.
Filtragem
Dentro de mongosh
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)})
Esta operação apresenta a saída getLog
no mesmo formato que o MongoDB log file
.
Fora de mongosh
com jq
Ao trabalhar com o log estruturado do MongoDB, o utilitário de linha de comando jqde terceiros é uma ferramenta útil que permite a impressão fácil e bonita de entradas de registro e a poderosa correspondência e filtragem baseadas em chaves.
jq
é um analisador JSON de código aberto, e está disponível para Linux, Windows e macOS.
Para usar jq
com saída getLog
, você deve usar a opção --eval
para mongosh
. A operação a seguir usa jq
para filtrar o componente REPL e apresentar apenas as mensagens de registro 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 mongosh
conforme necessário, como --host
ou --port
.
Consulte Analisando Mensagens de registro estruturadas para mais exemplos de filtragem de saída de registro utilizando jq
. A sintaxe do jq
apresentada em cada exemplo vinculado pode ser utilizada com a operação mongo --eval
acima com ajuste menor. 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
Exemplos
Recuperar filtros de registro disponíveis
A operação a seguir, executada a partir de mongosh
, retorna os filtros de log disponíveis para passar para getLog
:
db.adminCommand( { getLog: "*" } )
A operação retorna o seguinte documento:
{ "names" : [ "global", "startupWarnings" ], "ok" : 1 }
Recuperar eventos recentes de registro
A operação a seguir, executada a partir de mongosh
, recupera os eventos global
mais recentes para 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>) }