Docs Menu
Docs Home
/ /
Monitorear la actividad de la aplicación

Ver registros de aplicaciones

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.

Ver registros en la Interfaz de usuario Realm

Los menús desplegables permiten filtrar por tipos predefinidos de entradas de registro y el estado de las entradas. También puede especificar un rango de fechas, filtrar por ID de usuario y mostrar solo las entradas asociadas a un ID de solicitud específico.

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.

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.

Descargar registros en la interfaz de usuario de servicios de aplicaciones

Puede acceder a los registros de una aplicación en su terminal o en un script de shell con la CLI de App Services.

Para devolver las 100 entradas de registro más recientes de su aplicación, ejecute appservices logs list.

appservices logs list

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

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

Puede usar el indicador --type para ver registros de uno o más tipos específicos. Si no especifica ningún tipo, el comando devuelve registros de todos los tipos.

Los siguientes tipos son válidos:

  • auth

  • function

  • push

  • service

  • trigger

  • graphql

  • sync

  • schema

  • trigger_error_handler

  • log_forwarder

  • endpoint

appservices logs list --type=function --type=trigger

Puede usar los indicadores --start y --end para ver registros de un rango de fechas. Estos indicadores aceptan cadenas ISODate y puede usarlos por separado o en conjunto.

appservices logs list --start="2021-01-01T00:00:00.000+0000" --end="2021-02-01T00:00:00.000+0000"

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.

Para usar la API de administración, necesitará su ID de proyecto, ID de aplicación y credenciales de autenticación. Para saber cómo encontrarlas, consulte ID de proyecto y aplicación y Obtener tokens de autenticación.

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("&")
: ""
}

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;
}

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 especificado incluye más de 100 entradas de registro, deberá ejecutar varias consultas para acceder a todas ellas. 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;
}

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 puedes 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;
}
}

Volver

Monitorear la actividad de la aplicación