日志记录配置
Overview
在本指南中,您可以学习;了解如何在 Mongoid应用程序中配置日志记录。 配置日志记录时,请注意 Mongoid 在Ruby驾驶员之上提供了一个模型层,并且驾驶员将数据操作分派给MongoDB。因此,使用 Mongoid 的应用程序中的某些日志输出来自 Mongoid 本身,而另一些则来自驾驶员。
驱动程序记录器
Mongoid客户端是Ruby驾驶员客户端实例,因此 Mongoid客户端的记录器是Ruby驾驶员记录器,而不是 Mongoid 记录器。 以下代码创建 Mongoid客户端记录器:
Mongoid.client(:default).logger
根据您的应用程序框架以及您配置 Mongoid 和Ruby驾驶员的方式,它们可能会使用相同的记录器实例或不同的实例(可能具有不同的配置)。
Ruby on Rails 配置
在Ruby on Rails应用程序中使用 Mongoid 时,默认下,Mongoid 会从 Rails 继承记录器和日志级别。 Mongoid 将驱动程序的记录器设置为同一记录器实例:
Rails.logger === Mongoid.logger # => true Mongoid.logger === Mongo::Logger.logger # => true
要更改日志级别,请使用 标准 Rails 配置 。将以下区块放入您的一个环境配置文件中,例如 config/environments/production.rb
:
Rails.application.configure do config.log_level = :debug end
注意
当 Mongoid 在 Rails应用程序中运行时,不使用 log_level
Mongoid 配置选项,因为 Mongoid 会继承 Rails 的日志级别。
要以不同于 Rails 记录器的方式配置 Mongoid 或驾驶员记录器,请使用初始化程序,如以下代码所示:
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
注意
Ruby标准库 Logger
中没有可返回记录器正在使用的日志设备的规定,例如 IO
对象。
示例,要使 Mongoid 或Ruby驾驶员以与标准 Rails 记录器 (Rails.logger
) 不同的级别日志到标准 Rails日志文件(log/development.log
),您必须单独打开该文件并将生成的 IO
对象传递给 Logger
构造函数。
由于 Mongoid 将自己的记录器和驱动程序的记录器设置为与 Rails 记录器相同的实例,因此修改任何实例都会影响所有记录器。 示例,以下代码更改所有三个记录器的日志级别:
Mongoid::Logger.logger.level = Logger::DEBUG
独立运行配置
当未加载到Ruby on Rails应用程序中时,Mongoid 会遵循 log_level
顶级配置选项:
development: clients: default: ... options: log_level: :debug
您还可以在线配置日志级别:
Mongoid.configure do |config| config.log_level = :debug end
默认日志目标是标准错误。 要更改日志目标,请创建一个新的记录器实例,如以下代码所示:
Mongoid.logger = Logger.new(STDERR).tap do |logger| logger.level = Logger::DEBUG end
要更改Ruby驾驶员日志级别或目标,请将以下区块添加到您的应用程序文件中:
Mongo::Logger.logger = Logger.new(STDERR).tap do |logger| logger.level = Logger::DEBUG end
注意
在独立运行模式下运行时,Mongoid 不会更改驱动程序的记录器。