개요
이 가이드 에서는 Mongoid 애플리케이션 에서 로깅을 구성하는 방법을 학습 수 있습니다. 로깅을 구성할 때 Mongoid는 Ruby 운전자 위에 모델 계층을 제공하고 운전자 데이터 작업을 MongoDB 에 할당합니다. 따라서 Mongoid를 사용하는 애플리케이션 의 로깅 출력 중 일부는 Mongoid 자체에서 발생하고 일부는 운전자 에서 발생합니다.
드라이버 로거
Mongoid 클라이언트 는 Ruby 운전자 클라이언트 인스턴스 이므로 Mongoid 클라이언트 의 로거는 Mongoid 로거가 아닌 Ruby 운전자 로거입니다. 다음 코드는 Mongoid 클라이언트 로거를 생성합니다.
Mongoid.client(:default).logger
애플리케이션 프레임워크 와 Mongoid 및 Ruby 운전자 구성하는 방법에 따라 동일한 로거 인스턴스 또는 다른 인스턴스를 사용할 수 있으며, 잠재적으로 구성이 다를 수 있습니다.
Ruby on Rails 구성
Ruby on Rails 애플리케이션 에서 사용되는 경우, 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
참고
log_level Mongoid 구성 옵션은 Mongoid가 Rails 애플리케이션 에서 작동할 때 사용되지 않는데, 이는 Mongoid가 Rails의 로그 수준을 상속하기 때문입니다.
Mongoid 또는 운전자 로거를 Rails 로거와 다르게 구성하려면 다음 코드에 표시된 대로 이니셜라이저를 사용하세요.
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는 독립형 모드 에서 실행 때 드라이버의 로거를 변경하지 않습니다.