Cómo registrar eventos de la aplicación con Ruby

Esta parte del instructivo de Bookshelf muestra cómo una app puede incorporar registros detallados para ayudar a detectar, depurar y supervisar los posibles problemas. El registro de eventos puede ayudarte a identificar y resolver problemas, durante el desarrollo y en la etapa de producción de la app.

Esta página forma parte de un instructivo de varias páginas. Para comenzar desde el principio y leer las instrucciones de configuración, ve a la app de Bookshelf para Ruby.

Cómo instalar dependencias

Ve al directorio getting-started-ruby/5-logging y, luego, ingresa este comando:

bundle install

Configuraciones

  1. Copia el archivo de configuración de ejemplo:

    cp config/settings.example.yml config/settings.yml
    
  2. Edita settings.yml de la misma manera que lo hiciste en la sección .

    Por ejemplo, supongamos que el ID de cliente de tu aplicación web es XYZCLIENTID y el secreto de cliente es XYZCLIENTSECRET. Asimismo, supongamos que el nombre de tu proyecto es my-project y que el nombre de tu depósito de Cloud Storage es my-bucket. Entonces, la sección predeterminada de tu archivo settings.yml se vería así:

    default: &default
      project_id: my-project
      gcs_bucket: my-bucket
      oauth2:
        client_id: XYZCLIENTID
        client_secret: XYZCLIENTSECRET
    
  3. Copia el archivo database de ejemplo:

    cp config/database.example.yml config/database.yml
    
  4. Configura la app de muestra para que use la misma base de datos que configuraste durante la sección Cómo usar datos estructurados de este instructivo:

    Cloud SQL

    Edita el archivo database.yml. Quita los comentarios de las líneas en la sección de Cloud SQL del archivo. Reemplaza los [PLACEHOLDERS] por los valores específicos de tu instancia y tu base de datos de Cloud SQL.

     mysql_settings: &mysql_settings
       adapter: mysql2
       encoding: utf8
       pool: 5
       timeout: 5000
       username: [MYSQL_USER]
       password: [MYSQL_PASS]
       database: [MYSQL_DATABASE]
       socket: /cloudsql/[YOUR_INSTANCE_CONNECTION_NAME]
    
    • Reemplaza [MYSQL_USER] y [MYSQL_PASS] por el nombre de usuario y la contraseña de la instancia de Cloud SQL que creaste anteriormente.

    • Reemplaza [MYSQL_DATABASE] por el nombre de la base de datos que creaste anteriormente.

    • Reemplaza [YOUR_INSTANCE_CONNECTION_NAME] por Instance Connection Name, correspondiente a tu instancia de Cloud SQL.

    Ejecuta las migraciones:

    bundle exec rake db:migrate
    

    PostgreSQL

    Edita el archivo database.yml. Quita los comentarios a las líneas en la sección de PostgreSQL del archivo. Reemplaza los marcadores de posición your-postgresql-* por los valores específicos de tu instancia y base de datos de PostgreSQL. Por ejemplo, supongamos que la dirección IPv4 es 173.194.230.44, el nombre de usuario es postgres y la contraseña es pword123. Además, supongamos que el nombre de la base de datos es bookshelf. Entonces, la sección de PostgreSQL de tu archivo database.yml se vería así:

    # PostgreSQL Sample Database Configuration
    # ----------------------------------------
      adapter: postgresql
      encoding: unicode
      pool: 5
      username: postgres
      password: pword123
      host: 173.194.230.44
      database: bookshelf
    

    Crea las bases de datos y tablas obligatorias:

    bundle exec rake db:create
    bundle exec rake db:migrate
    

    Cloud Datastore

    Edita el archivo database.yml. Quita los comentarios de la única línea en la sección de Cloud Datastore del archivo. Reemplaza your-project-id por el ID del proyecto. Por ejemplo, supongamos que el ID del proyecto es my-project; la parte de Cloud Datastore del archivo database.yml se vería así:

    # Google Cloud Datastore Sample Database Configuration
    # ----------------------------------------------------
    dataset_id: my-project
    

    Ejecuta una tarea de rake para copiar los archivos de proyecto de muestra de Cloud Datastore:

    bundle exec rake backend:datastore
    

Ejecución de la app en la máquina local

  1. Inicia un servidor web local:

    bundle exec rails server
    
  2. En el navegador web, ingresa la siguiente dirección:

    http://localhost:3000

Presiona Control + C para salir del servidor web local.

Implementación de la app en el entorno flexible de App Engine

  1. Compila recursos de JavaScript para producción:

    RAILS_ENV=production bundle exec rake assets:precompile
    
  2. Implementa la app de muestra:

    gcloud app deploy
    
  3. En el navegador web, ingresa la siguiente dirección. Reemplaza [YOUR_PROJECT_ID] por el ID del proyecto:

    https://[YOUR_PROJECT_ID].appspot.com
    

Si actualizas tu app, podrás implementar la versión actualizada mediante el mismo comando que usaste para implementar la app por primera vez. La implementación nueva crea una versión nueva de tu app y la convierte a la versión predeterminada. Las versiones anteriores de la app se conservan, al igual que sus instancias de VM asociadas. Ten en cuenta que todas estas instancias de VM y versiones de la app son recursos facturables.

Para reducir costos, borra las versiones no predeterminadas de la app.

Para borrar una versión de una app, haz lo siguiente:

  1. En GCP Console, dirígete a la página Versiones de App Engine.

    Ir a la página de Versiones

  2. Haz clic en la casilla de verificación junto a la versión de app no predeterminada que deseas borrar.
  3. Haz clic en el botón Borrar en la parte superior de la página para borrar la versión de la app.

Para obtener toda la información acerca de la limpieza de los recursos facturables, consulta la sección Limpieza en el paso final de este instructivo.

Estructura de la aplicación

El diagrama siguiente muestra la manera en que la app maneja los registros cuando se implementa en el entorno flexible de App Engine.

Estructura de muestra de registros en entorno flexible

Cómo ver registros

Durante su ejecución, la app Bookshelf escribe datos de registro que se recopilan y quedan disponibles en la consola de Google Cloud Platform. Para analizar los registros directamente, usa las herramientas de supervisión de registros en GCP Console. Si quieres realizar un análisis más detallado, usa GCP Console para transmitir o importar los registros de la app a BigQuery o exportarlos a un depósito de Google Cloud Storage.

Registro en la consola

Comprensión del código

Rails incluye un sistema de registro potente y configurable. La app de Bookshelf configura Rails para ubicar los registros en el directorio donde el entorno flexible de App Engine espera encontrarlos.

if Dir.exist? "/var/log/app_engine/custom_logs"
  config.logger = ActiveSupport::TaggedLogging.new Logger.new("/var/log/app_engine/custom_logs/application.log")
end

Además de los mensajes predeterminados que proporciona Rails, puedes registrar lo que quieras con el objeto "logger" de Rails.

logger.debug "Debug message."
logger.info "Infomational."
logger.fatal "Fatal error."
¿Te sirvió esta página? Envíanos tu opinión: