Visão geral
Neste guia, você pode aprender como configurar o registro em seu aplicação Mongoid. Ao configurar o registro, observe que o Mongoid fornece uma camada de modelo sobre o driver Ruby e o driver despacha operações de dados para o MongoDB. Portanto, parte da saída de registro em um aplicação que usa o Mongoid vem do próprio Mongoid e parte vem do driver.
Registro de driver
O cliente Mongoid é uma instância do cliente do driver Ruby, portanto, o registrador de um cliente Mongoid é o registrador do driver Ruby, não o registrador do Mongoid. O seguinte código cria um registrador de cliente Mongoid:
Mongoid.client(:default).logger
Dependendo da estrutura do aplicação e de como você configura o Mongoid e o driver Ruby, eles podem usar a mesma instância do registrador ou instâncias diferentes, potencialmente com configurações diferentes.
Configuração Ruby on Rails
Quando usado em um aplicação Ruby on Rails, o Mongoid, por padrão, herda o registrador e o nível de registro do Rails. O Mongoid define o registrador do driver para a mesma instância de registrador:
Rails.logger === Mongoid.logger # => true Mongoid.logger === Mongo::Logger.logger # => true
Para alterar o nível de registro, use a configuração padrão do Rails. Coloque o seguinte bloco em um dos seus arquivos de configuração de ambiente, como config/environments/production.rb
:
Rails.application.configure do config.log_level = :debug end
Observação
A opção de configuração log_level
Mongoid não é usada quando o Mongoid opera em um aplicação Rails, porque o Mongoid herda o nível de registro do Rails.
Para configurar o Mongoid ou o registrador de driver de forma diferente do registrador do Rails, use um inicializador, conforme mostrado no código a seguir:
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
Observação
Não há nenhuma cláusula na biblioteca padrão Ruby Logger
para retornar o dispositivo de log, como o objeto IO
, que um logger está usando.
Para fazer, por exemplo, o Mongoid ou o driver Ruby registrar no arquivo de log padrão do Rails (log/development.log
) com um nível diferente do registrador do Rails padrão (Rails.logger
), você deve abrir o arquivo separadamente e passar o IO
resultante objeto para o construtor Logger
.
Como o Mongoid define seu próprio registrador e o registrador do driver para a mesma instância que o registrador do Rails, modificar qualquer uma das instâncias afeta todos os registradores. Por exemplo, o código a seguir altera o nível de registro de todos os três registradores:
Mongoid::Logger.logger.level = Logger::DEBUG
Configuração standalone
Quando não é carregado em um aplicação Ruby on Rails, o Mongoid respeita a opção de configuração de nível superior log_level
:
development: clients: default: ... options: log_level: :debug
Você também pode configurar o nível de registro in-line:
Mongoid.configure do |config| config.log_level = :debug end
O destino de registro padrão é de erro padrão. Para alterar o destino do registro, crie uma nova instância de registrador, conforme mostrado no código a seguir:
Mongoid.logger = Logger.new(STDERR).tap do |logger| logger.level = Logger::DEBUG end
Para alterar o nível de registo do driver Ruby ou destino, adicione o seguinte bloco ao seu arquivo de aplicação :
Mongo::Logger.logger = Logger.new(STDERR).tap do |logger| logger.level = Logger::DEBUG end
Observação
O Mongoid não altera o registrador do driver quando executado no modo autônomo .