Definición
getLoggetLoges un comando administrativo que devuelve los 1024 eventos registrados más recientes para unmongodInstanciamongoso.getLogno lee los datos de registro del archivo de registro. En su lugar, lee los datos de una caché RAM de eventos registrados demongodmongoso. Para ejecutar,getLogdb.adminCommand()utilice el método.getLogdevuelve datos de registro en JSON ampliado relajado v2.0 escapados formato. Anteriormente, los datos del registro se devolvían como texto simple.
Compatibilidad
Este comando está disponible en implementaciones alojadas en los siguientes entornos:
MongoDB Atlas: El servicio totalmente gestionado para implementaciones de MongoDB en la nube
Nota
Este comando es compatible con todos los clústeres de MongoDB Atlas. Para obtener información sobre el soporte de Atlas para todos los comandos, consulte Comandos no compatibles.
MongoDB Enterprise: La versión basada en suscripción y autogestionada de MongoDB
MongoDB Community: La versión de MongoDB con código fuente disponible, de uso gratuito y autogestionada.
Sintaxis
El comando tiene la siguiente sintaxis:
db.adminCommand( { getLog: <value> } )
Campos de comandos
Los posibles valores para getLog son:
Valor | Descripción |
|---|---|
| Devuelve una lista de los valores disponibles para el comando |
| Devuelve la salida combinada de todas las entradas recientes en el registro. |
| Devuelve entradas de registro que pueden contener errores o advertencias del registro de MongoDB desde que se inició el proceso actual. Si el proceso se inicia sin advertencias, este filtro puede devolver un arreglo vacío. |
Nota
El comando getLog ya no acepta el valor rs, ya que esta categorización del tipo de mensaje ha quedado obsoleta. En su lugar, los mensajes del registro ahora siempre se identifican por su componente, incluyendo REPL para mensajes de replicación. Consulte Filtrado por componente para ejemplos de análisis de registros que filtran en el campo del componente.
Salida
Si se especifica *, el comando devuelve un documento con los nombres de los otros valores aceptables.
De lo contrario, el comando devuelve un documento que incluye los siguientes campos:
totalLinesWrittencampo que contiene el número de eventos de registrologcampo que contiene un arreglo de eventos de registrosUn
db.adminCommand()documento de respuesta, que contiene información de estado y marca de tiempo.
Comportamiento
Truncamiento de línea
getLog trunca cualquier evento que contenga más de 1024 caracteres.
Escape de caracteres
getLog devuelve datos de registro en formato JSON relajado extendido v2.0 escapado, utilizando las siguientes secuencias de escape para representar la salida del registro como JSON válido:
Carácter representado | Secuencia de escape |
|---|---|
Comillas ( |
|
Backslash ( |
|
Retroceso ( |
|
Formfeed ( |
|
Nueva línea ( |
|
Retorno de carro ( |
|
Horizontal tab ( |
|
Los caracteres de control que no se enumeran arriba se escapan con \uXXXX, donde "XXXX" es el punto de código Unicode en hexadecimal. Los bytes con codificación UTF-8 no válida se reemplazan por el carácter de reemplazo Unicode representado por \ufffd.
Filtrado
Dentro de mongosh
getLog la salida puede filtrarse para que los resultados sean más legibles o para coincidir con criterios específicos.
La siguiente operación imprime solo el campo log (que contiene el array de todos los eventos de registro recientes) y elimina el escape de caracteres de cada mensaje de registro:
db.adminCommand( { getLog:'global'} ).log.forEach(x => {print(x)})
Esta operación presenta la salida getLog con el mismo formato que la log file.de MongoDB
Fuera de mongosh con jq
Cuando trabajes con el registro estructurado de MongoDB, puedes utilizar la utilidad de línea de comandos jq para una impresión fácil y bonita de entradas de registro, y potentes coincidencias y filtros basados en claves.
jq es un analizador JSON de código abierto y está disponible para Linux, Windows y macOS.
Para usar jq con la salida de getLog, debes usar la opción --eval con mongosh. La siguiente operación usa jq para filtrar en el component REPL para presentar solo aquellos mensajes de registro asociados con la replicación:
mongosh --quiet --eval "db.adminCommand( { getLog:'global'} ).log.forEach(x => {print(x)})" | jq -c '. | select(.c=="REPL")'
Asegúrate de proporcionar cualquier parámetro específico de conexión necesario a mongosh según sea necesario, como --host o --port.
Consulta Analizar los mensajes de registro estructurados para ver más ejemplos de cómo filtrar la salida de registro usando jq. La sintaxis de jq presentada en cada ejemplo vinculado puede usarse con la operación mongo --eval anterior con ligeros ajustes. Por ejemplo, la siguiente sintaxis adapta el ejemplo vinculado "Contando mensajes únicos" para su uso con getLog:
mongosh --quiet --eval "db.adminCommand( { getLog:'global'} ).log.forEach(x => {print(x)})" | jq -r ".msg" | sort | uniq -c | sort -rn | head -10
Ejemplos
Recuperar filtros de registro disponibles
La siguiente operación, ejecutada desde mongosh, devuelve los filtros de registros disponibles para pasarlos a getLog:
db.adminCommand( { getLog: "*" } )
La operación devuelve el siguiente documento:
{ "names" : [ "global", "startupWarnings" ], "ok" : 1 }
Recupera eventos recientes del registro
La siguiente operación, ejecutada desde mongosh, recupera los global eventos más recientes para una instancia mongod o mongos:
db.adminCommand( { getLog : "global" } )
La operación retorna un documento similar al siguiente:
{ "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" : Long(8) } }, "$clusterTime" : { "clusterTime" : Timestamp(<ts>), "signature" : { "hash" : BinData(<bin>), "keyId" : Long(0) } }, "operationTime" : Timestamp(<ts>) }