Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /
Monitor App Activity

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

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.

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

Se puede acceder a los registros de una aplicación desde la terminal o 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

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:

  • auth

  • function

  • push

  • service

  • trigger

  • graphql

  • sync

  • schema

  • trigger_error_handler

  • log_forwarder

  • endpoint

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

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"

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

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

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

Volver

Monitor App Activity

En esta página