Overview
En esta guía, aprenderá a configurar el registro en su aplicación Mongoid. Al configurar el registro, tenga en cuenta que Mongoid proporciona una capa de modelo sobre el controlador Ruby, y este controlador envía las operaciones de datos a MongoDB. Por lo tanto, parte de la salida del registro en una aplicación que usa Mongoid proviene del propio Mongoid y parte del controlador.
Registrador de conductores
El cliente Mongoid es una instancia de cliente del controlador Ruby, por lo que el registrador de un cliente Mongoid es el registrador del controlador Ruby, no el registrador Mongoid. El siguiente código crea un registrador de cliente Mongoid:
Mongoid.client(:default).logger
Dependiendo del marco de su 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 diferentes.
Configuración de Ruby on Rails
Al usarse en una aplicación Ruby on Rails, Mongoid hereda el registrador y el nivel de registro de Rails por defecto. Mongoid configura el registrador del controlador en la misma instancia del registrador:
Rails.logger === Mongoid.logger # => true Mongoid.logger === Mongo::Logger.logger # => true
Para cambiar el nivel de registro, utilice el configuración estándar de RailsColoque el siguiente bloque en uno de los archivos de configuración de su entorno, como config/environments/production.rb:
Rails.application.configure do config.log_level = :debug end
Nota
La opción de configuración log_level de Mongoid no se utiliza cuando Mongoid opera en una aplicación Rails, porque Mongoid hereda el nivel de registro de Rails.
Para configurar el registrador Mongoid o del controlador de forma diferente al registrador Rails, utilice 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, por ejemplo, que Mongoid o el controlador Ruby registren el archivo de registro estándar de Rails (log/development.log) con un nivel diferente del registrador estándar de Rails (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 del controlador en la misma instancia que el registrador de Rails, modificar cualquiera de las instancias afecta a todos los registradores. Por ejemplo, el siguiente código cambia el nivel de registro de los tres registradores:
Mongoid::Logger.logger.level = Logger::DEBUG
Configuración independiente
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 predeterminado del registro es el error estándar. Para cambiarlo, cree una nueva instancia del registrador 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 Ruby, agregue el siguiente bloque a su archivo de aplicación:
Mongo::Logger.logger = Logger.new(STDERR).tap do |logger| logger.level = Logger::DEBUG end
Nota
Mongoid no cambia el registrador del controlador cuando se ejecuta en modo independiente.