App Services UI
Puedes ver, filtrar, buscar y descargar los registros de una aplicación en la interfaz de usuario de App Services. Para ver los registros de tu aplicación, haz clic en Logs en el menú de navegación de la izquierda.

Filtrar registros
Drop-down menus enable filtering by predefined types of log entry, the status of entries. You can also specify a date range, filter by user ID, and show only entries associated with a specific request ID.
Limit the Number of Log Entries
En el campo de texto con el marcador de posición Max # of Logs, introduzca el número máximo de resultados que desea mostrar en la página. Si hay más registros que superan su límite, verá un botón Load More al final de la lista de entradas del registro.
Descargar registros
Haga clic en el botón de descarga, a la derecha del botón Apply, para descargar las entradas de registro que cumplen con sus criterios de filtro (o todas las entradas de registro si no ha especificado ningún filtro). Al hacer clic en este botón, aparecerá un cuadro de diálogo que confirma los filtros que se aplicarán y le solicita (opcionalmente) que limite el número de resultados. El conjunto resultante de entradas de registro se almacena en un archivo .zip que contiene un único archivo JSON.

App Services CLI
Se puede acceder a los registros de una aplicación desde la terminal o un script de shell con la CLI de App Services.
Ver registros recientes
Para devolver las 100 entradas de registro más recientes de su aplicación, ejecute appservices
logs list.
appservices logs list
Registros de cola en tiempo real
Puedes usar la bandera --tail para abrir un stream que muestre los registros de la aplicación a medida que llegan.
appservices logs list --tail
View Error Logs
Puede usar el indicador --errors para ver solo los registros de errores. Si no lo especifica, el comando devuelve tanto los registros de errores como los registros normales.
appservices logs list --errors
Filtrar registros por tipo
Se puede usar la bandera --type para ver los registros de uno o más tipos específicos. Si no se especifica un tipo, el comando devolverá registros de todos los tipos.
The following types are valid:
authfunctionpushservicetriggergraphqlsyncschematrigger_error_handlerlog_forwarderendpoint
appservices logs list --type=function --type=trigger
Ver registros de un rango de fechas
Puedes utilizar los indicadores --start y --end para ver registros de varios rangos de fechas. Los indicadores aceptan cadenas ISODate y puedes utilizar ambos de forma separada o conjunta.
appservices logs list --start="2021-01-01T00:00:00.000+0000" --end="2021-02-01T00:00:00.000+0000"
API de servicios de aplicaciones
Puede acceder a los registros de una aplicación a través de HTTPS llamando al Puntos finales de registros de API de administración.
To use the Admin API you'll need your Project ID, App ID, and authentication credentials. To learn how to find these, see Project & Application IDs and Get Authentication Tokens.
Los ejemplos de esta sección utilizan las siguientes funciones auxiliares en una función:
async function authenticate(publicApiKey, privateApiKey) { const result = await context.http.post({ url: `${ADMIN_API_BASE_URL}/auth/providers/mongodb-cloud/login`, headers: { "Content-Type": ["application/json"], "Accept": ["application/json"], }, body: { "username": publicApiKey, "apiKey": privateApiKey, }, encodeBodyAsJSON: true }) return EJSON.parse(result.body.text()); } function formatQueryString(queryParams) { const params = Object.entries(queryParams); return params.length > 0 ? "?" + params.map(([a, b]) => `${a}=${b}`).join("&") : "" }
Obtener registros recientes
Para devolver las 100 entradas de registro más recientes de su aplicación, llame al punto final de Registro sin parámetros adicionales:
const ADMIN_API_BASE_URL = "https://services.cloud.mongodb.com/api/admin/v3.0"; exports = async function() { // Get values that you need for requests const projectId = "<Atlas Project ID>"; const appId = "<App ID>"; const publicApiKey = "<Atlas Public API Key>"; const privateApiKey = "<Atlas Private API Key>"; // Authenticate with the Atlas API Key const { access_token } = await authenticate(publicApiKey, privateApiKey); // Get logs for your App const logsEndpoint = `${ADMIN_API_BASE_URL}/groups/${projectId}/apps/${appId}/logs`; const request = { "url": logsEndpoint, "headers": { "Authorization": [`Bearer ${access_token}`] } }; const result = await context.http.get(request); const logs = EJSON.parse(result.body.text()); return logs; }
Obtener registros para un rango de fechas
Para devolver entradas de registro para un rango de fechas específico, llame al punto final de Registro con uno o ambos de los campos start_date y end_date:
Nota
Paginación de resultados
Si el rango de fechas que especificas incluye más de 100 entradas de registro, deberás ejecutar varias queries para acceder a todas las entradas. Para saber cómo, consulte Obtener registros paginados.
const ADMIN_API_BASE_URL = "https://services.cloud.mongodb.com/api/admin/v3.0"; exports = async function() { // Get values that you need for requests const projectId = "<Atlas Project ID>"; const appId = "<App ID>"; const publicApiKey = "<Atlas Public API Key>"; const privateApiKey = "<Atlas Private API Key>"; // Authenticate with the Atlas API Key const { access_token } = await authenticate(publicApiKey, privateApiKey); // Get logs for your App const logsEndpoint = `${ADMIN_API_BASE_URL}/groups/${projectId}/apps/${appId}/logs`; const request = { "url": logsEndpoint + formatQueryString({ start_date: "2019-07-01", end_date: "2019-07-31", }), "headers": { "Authorization": [`Bearer ${access_token}`] } }; const result = await context.http.get(request); const logs = EJSON.parse(result.body.text()); return logs; }
Obtener registros paginados
App Services devuelve un máximo de 100 entradas de registro por cada solicitud. Si una consulta coincide con más de 100 entradas de registro, la API devuelve la primera página de 100 resultados e incluye parámetros adicionales en la respuesta que puede proporcionar para obtener las siguientes páginas de hasta 100 entradas.
Nota
Respuestas paginadas
Una respuesta paginada se parece al siguiente documento, donde nextEndDate y nextSkip son opcionales:
{ logs: [<Log Entry>, ...], nextEndDate: "<End date of the next page>", nextSkip: <Offset of the next page>, }
const ADMIN_API_BASE_URL = "https://services.cloud.mongodb.com/api/admin/v3.0"; exports = async function() { // Get values that you need for requests const projectId = "<Atlas Project ID>"; const appId = "<App ID>"; const publicApiKey = "<Atlas Public API Key>"; const privateApiKey = "<Atlas Private API Key>"; // Authenticate with the Atlas API Key const { access_token } = await authenticate(publicApiKey, privateApiKey); // Get logs for your App const pager = new LogPager(projectId, appId, access_token); const firstPage = await pager.getNextPage(); const secondPage = await pager.getNextPage(firstPage); const thirdPage = await pager.getNextPage(secondPage); const allLogs = await pager.getAllLogs(); } class LogPager { constructor(projectId, appId, access_token, queryParams={}) { this.logsEndpoint = `${ADMIN_API_BASE_URL}/groups/${projectId}/apps/${appId}/logs`; this.queryParams = queryParams; this.authHeaders = { Authorization: [`Bearer ${access_token}`] } } async getNextPage(prevPage) { const { nextEndDate, nextSkip } = prevPage || {}; if(prevPage && !nextEndDate) { throw new Error("Paginated API does not have any more pages.") } const request = { "headers": this.authHeaders, "url": this.logsEndpoint + formatQueryString({ ...this.queryParams, end_date: nextEndDate, skip: nextSkip, }), } const result = await context.http.get(request); const nextPage = EJSON.parse(result.body.text()); return nextPage } async getAllLogs() { // Note: If your query parameters match too many logs this might time out let logs = [] let hasNext = true; let prevPage = null while(hasNext) { const page = await getNextPage(prevPage); logs = logs.concat(page.logs); hasNext = page.nextEndDate prevPage = page } return logs; } }