Información general
Cuando se envía una solicitud a tu aplicación, App Engine escribe automáticamente un registro de solicitudes. Durante la gestión de la solicitud, tu aplicación también puede escribir registros de aplicaciones. En esta página, aprenderás a escribir registros de aplicaciones desde tu aplicación, a ver los registros en la consolaGoogle Cloud y a interpretar los datos de registro de solicitudes que escribe App Engine durante la solicitud.
Para obtener información sobre cómo descargar datos de registro, consulta el artículo Descripción general de las exportaciones de registros.
Registros de solicitudes y registros de aplicaciones
Hay dos categorías de datos de registro: registros de solicitudes y registros de aplicaciones. App Engine escribe automáticamente un registro de solicitudes para cada solicitud gestionada por tu aplicación, que contiene información como el ID del proyecto, la versión HTTP, etc. Para ver una lista completa de las propiedades disponibles de los registros de solicitudes, consulta RequestLog. Consulta también la tabla de registro de solicitudes para ver las descripciones de los campos del registro de solicitudes.
Cada registro de solicitudes contiene una lista de registros de aplicaciones (AppLog) asociados a esa solicitud, que se devuelve en la propiedad RequestLog.app_logs
. Cada registro de aplicación contiene la hora en la que se escribió el registro, el mensaje del registro y el nivel del registro.
Escribir registros de aplicaciones
Te recomendamos que leas la documentación del módulo de registro estándar de Python en Python.org.El módulo de registro de Python permite a los desarrolladores registrar 5 niveles de gravedad. :
- Depurar
- Información
- Advertencia
- Error
- Crítica
En el siguiente ejemplo se muestra cómo usar los diferentes niveles de registro:
Registrar el formato de la URL en la consola de Google Cloud
Consulta la siguiente URL de ejemplo para ver el formato de la URL de registro en la consola Google Cloud :
https://console.cloud.google.com/logs?filters=request_id:000000db00ff00ff827e493472570001737e73686966746361727331000168656164000100
Leer registros en la consola
Para ver los registros escritos por las aplicaciones que se ejecutan en el entorno estándar, usa el Explorador de registros.
Un registro típico de App Engine contiene datos en el formato de registro combinado de Apache, junto con algunos campos especiales de App Engine, como se muestra en el siguiente registro de ejemplo:
192.0.2.0 - test [27/Jun/2014:09:11:47 -0700] "GET / HTTP/1.1" 200 414
"http://www.example.com/index.html"
Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36"
"1-dot-calm-sylph-602.appspot.com" ms=195 cpu_ms=42 cpm_usd=0.000046
loading_request=1 instance=00c61b117cfeb66f973d7df1b7f4ae1f064d app_engine_release=
Información sobre los campos de los registros de solicitudes
En la tabla siguiente se enumeran los campos por orden de aparición junto con una descripción:
Field Order | Nombre del campo | ¿Siempre presente? | Descripción |
---|---|---|---|
1 | Dirección del cliente | Sí | Dirección IP del cliente. Ejemplo: 192.0.2.0 |
2 | Identidad RFC 1413 | No | Identidad del cliente conforme al RFC 1413. Casi siempre es el carácter - |
3 | Usuario | No | Solo se presenta si la aplicación usa la API Users y el usuario ha iniciado sesión. Este valor es la parte del "nombre" de la cuenta de Google. Por ejemplo, si la cuenta de Google es test@example.com , el nombre que se registra en este campo es test . |
4 | Marca de tiempo | Sí | Marca de tiempo de la solicitud. Ejemplo: [27/Jun/2014:09:11:47 -0700] |
5 | Cadena de consulta de solicitud | Sí | Primera línea de la solicitud, que contiene el método, la ruta y la versión de HTTP. Ejemplo: GET / HTTP/1.1 |
6 | Código de estado HTTP | Sí | Código de estado HTTP devuelto. Ejemplo: 200 |
7 | Tamaño de la respuesta | Sí | Tamaño de la respuesta en bytes. Ejemplo: 414 |
8 | Ruta referente | No | Si no hay referente, el registro no contiene ninguna ruta, solo - . Ejemplo de ruta referente: "http://www.example.com/index.html" . |
9 | User-agent | Sí | Identifica el navegador y el sistema operativo en el servidor web. Ejemplo: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36 |
10 | Nombre de host | Sí | El nombre de host que usa el cliente para conectarse a la aplicación de App Engine. Ejemplo : (1-dot-calm-sylph-602.appspot.com ) |
11 | Tiempo real | Sí | Tiempo total de reloj en milisegundos que App Engine ha dedicado a la solicitud. Esta duración no incluye el tiempo transcurrido entre el cliente y el servidor que ejecuta la instancia de tu aplicación. Ejemplo: ms=195 |
12 | Milisegundos de CPU | Sí | Milisegundos de CPU necesarios para completar la solicitud. Es el número de milisegundos que la CPU ha dedicado a ejecutar el código de tu aplicación, expresado en términos de una CPU Intel x86 básica de 1,2 GHz. Si la CPU que se usa es más rápida que la de referencia, los milisegundos de la CPU pueden ser superiores al tiempo de reloj real definido anteriormente. Ejemplo: cpu_ms=42 |
13 | Código de salida | No | Solo se incluye si la instancia se ha cerrado después de recibir la solicitud. En el formato exit_code=XXX , donde XXX es un número de 3 dígitos que corresponde al motivo por el que se ha apagado la instancia. Los códigos de salida no están documentados, ya que su objetivo principal es ayudar a Google a detectar y solucionar problemas. |
14 | Coste estimado | Sí | OBSOLETO. Coste estimado de 1000 solicitudes como esta, en USD. Ejemplo: cpm_usd=0.000046 |
15 | Nombre de la cola | No | Nombre de la cola de tareas utilizada. Solo se presenta si la solicitud ha usado una cola de tareas. Ejemplo: queue_name=default |
16 | Nombre de la tarea | No | Nombre de la tarea ejecutada en la cola de tareas de esta solicitud. Solo se incluye si la solicitud ha provocado que se ponga en cola una tarea. Ejemplo: task_name=7287390692361099748 |
17 | Cola pendiente | No | Solo se incluye si una solicitud ha estado en una cola pendiente durante un tiempo. Si hay muchos de estos errores en sus registros o los valores son altos, puede que necesite más instancias para atender su tráfico. Ejemplo: pending_ms=195 |
18 | Cargando solicitud | No | Solo se incluye si la solicitud es de carga. Esto significa que se ha tenido que iniciar una instancia. Lo ideal es que tus instancias estén activas y en buen estado el mayor tiempo posible, sirviendo un gran número de solicitudes antes de reciclarse y tener que volver a iniciarse. Esto significa que no deberías ver demasiados en tus registros. Ejemplo: loading_request=1 |
19 | Instancia | Sí | Identificador único de la instancia que gestiona la solicitud. Ejemplo: instance=00c61b117cfeb66f973d7df1b7f4ae1f064d |
20 | Versión | Sí | La versión actual de App Engine que se usa en la producción de App Engine: |
Cuotas y límites
Tu aplicación se ve afectada por las siguientes cuotas relacionadas con los registros:
- Datos de registros obtenidos a través de la API Logs.
- Asignación y conservación de la ingesta de registros.
Cuota de datos recuperados
Los primeros 100 megabytes de datos de registro recuperados al día mediante llamadas a la API de registros son gratuitos. Si los datos superan los 100 MB, se cobrarán 0,12 USD por GB.
Asignación de ingestión de registros
Google Cloud Observability proporciona el almacenamiento de registros a las aplicaciones de App Engine. Consulta la página Precios de Google Cloud Observability para obtener más información sobre los costes y los límites de registro. Si quieres almacenar tus registros a largo plazo, puedes exportarlos de Google Cloud Observability a Cloud Storage, BigQuery y Pub/Sub.
Servidor de desarrollo y API Logs
De forma predeterminada, los registros se almacenan en la memoria solo en el servidor de desarrollo
y se puede acceder a ellos si quieres probar la función de la API Logs. Si quieres conservar los registros del servidor de desarrollo en el disco en una ubicación que elijas, proporciona la ruta y el nombre de archivo que quieras a la opción de línea de comandos --logs_path
de la siguiente manera:
python2 [DEVAPPSERVER_ROOT]/google_appengine/dev_appserver.py --logs_path=your-path/your-logfile-name your-app-directory