Learn the "why" behind slow queries and how to fix them in our 2-Part Webinar.
Register now >
Docs Menu
Docs Home
/ /

Configuración de registros

En esta guía, puedes aprender cómo configurar el registro de eventos en tu aplicación Mongoid. Al configurar el registro, tenga en cuenta que Mongoid proporciona una capa de modelo sobre el controlador Ruby, y el controlador envía operaciones de datos a MongoDB. Por lo tanto, parte de la salida de registro en una aplicación que utiliza Mongoid proviene del propio Mongoid, y parte proviene del driver.

El cliente de Mongoid es una instancia de cliente de driver de Ruby, por lo que el registrador de un cliente de Mongoid es el registrador de driver de Ruby, no el registrador de Mongoid. El siguiente código crea un registrador de cliente de Mongoid:

Mongoid.client(:default).logger

Dependiendo de su marco de aplicación y de cómo configure Mongoid y el controlador Ruby, pueden usar la misma instancia de registrador o instancias diferentes, potencialmente con configuraciones distintas.

Cuando se usa en una aplicación Ruby on Rails, Mongoid hereda por defecto el logger y el nivel de registro de Rails. Mongoid configura el registrador del controlador con la misma instancia del registrador:

Rails.logger === Mongoid.logger
# => true
Mongoid.logger === Mongo::Logger.logger
# => true

Para cambiar el nivel de registro, usa el comando configuración estándar de Rails. Coloca el siguiente bloque en uno de tus archivos de configuración de entorno, como config/environments/production.rb:

Rails.application.configure do
config.log_level = :debug
end

Nota

La opción de configuración de Mongoid log_level no se utiliza cuando Mongoid opera en una aplicación Rails, porque hereda el nivel de registro de Rails.

Para configurar el registrador de Mongoid o del driver de forma diferente al registrador de Rails, utiliza un inicializador como se muestra en el siguiente código:

Rails.application.configure do
config.after_initialize do
# Change Mongoid log destination and level
Mongoid.logger = Logger.new(STDERR).tap do |logger|
logger.level = Logger::DEBUG
end
# Change driver log destination and level
Mongo::Logger.logger = Logger.new(STDERR).tap do |logger|
logger.level = Logger::DEBUG
end
end
end

Nota

No existe ninguna disposición en la biblioteca estándar de Ruby Logger para devolver el dispositivo de registro, como el objeto IO, que está utilizando un registrador.

Para hacer que, por ejemplo, Mongoid o el controlador Ruby registren en el archivo de registro estándar de Rails (log/development.log) con un nivel diferente al de logger de Rails estándar (Rails.logger), debe abrir el archivo por separado y pasar el objeto IO resultante al constructor Logger.

Dado que Mongoid configura su propio registrador y el registrador del driver en la misma instancia que en el de Rails, modificar cualquiera de las instancias afecta a todos los registradores. Por ejemplo, el siguiente código cambia el nivel de registro para los tres registradores:

Mongoid::Logger.logger.level = Logger::DEBUG

Cuando no se carga en una aplicación Ruby on Rails, Mongoid respeta la opción de configuración de nivel superior log_level:

development:
clients:
default:
...
options:
log_level: :debug

También puede configurar el nivel de registro en línea:

Mongoid.configure do |config|
config.log_level = :debug
end

El destino de registro por defecto es error estándar. Para cambiar el destino del registro, crea una nueva instancia de registro como se muestra en el siguiente código:

Mongoid.logger = Logger.new(STDERR).tap do |logger|
logger.level = Logger::DEBUG
end

Para cambiar el nivel o el destino del registro del controlador de Ruby, añade el siguiente bloque al archivo de tu aplicación:

Mongo::Logger.logger = Logger.new(STDERR).tap do |logger|
logger.level = Logger::DEBUG
end

Nota

Mongoid no cambia el registrador del driver cuando se ejecuta en modo autónomo.

Volver

Tutorial: MongoDB Search

En esta página