[RUBY-ON-RAILS] 콘솔 안 함 레일 SQL 로깅
RUBY-ON-RAILS콘솔 안 함 레일 SQL 로깅
내가 콘솔에서 명령을 실행하고있어 비활성화 SQL 쿼리 로깅하는 방법은 무엇입니까? 난 그냥 그것을 해제 할 수 있습니다 콘솔에서 명령을 재 활성화하면 이상적으로, 그것은 좋은 것입니다.
나는 몇 가지 관련 데이터를 인쇄하는 "풋"을 사용하여 디버그 뭔가 노력하고 있어요. 그러나, SQL 쿼리의 출력을 읽을 열심히하고 있습니다.
편집하다: 전무 때때로 로거를 설정하면 오류가 발생하기 때문에 내 코드 이외의 다른 통화의 logger.warn에 시도하면 나는 또 다른 해결책을 발견
대신 1로 로거의 레벨을 설정할 수 있습니다 전무로 로거를 설정.
ActiveRecord::Base.logger.level = 1 # or Logger::INFO
해결법
-
==============================
1.를 끄려면 :
를 끄려면 :
old_logger = ActiveRecord::Base.logger ActiveRecord::Base.logger = nil
그것을 다시 켜려면 :
ActiveRecord::Base.logger = old_logger
-
==============================
2.다음은 여전히 AR 잠재적 다른 로깅을 할 수 있습니다 내가 다소 청소기 고려 변화가 있습니다. 에서 설정 / 환경 / development.rb :
다음은 여전히 AR 잠재적 다른 로깅을 할 수 있습니다 내가 다소 청소기 고려 변화가 있습니다. 에서 설정 / 환경 / development.rb :
config.after_initialize do ActiveRecord::Base.logger = Rails.logger.clone ActiveRecord::Base.logger.level = Logger::INFO end
-
==============================
3.이것은 콘솔에 적합한 솔루션이 아닐 수도 있지만, 레일은이 문제에 대한 방법이 있습니다 로거 # 침묵을
이것은 콘솔에 적합한 솔루션이 아닐 수도 있지만, 레일은이 문제에 대한 방법이 있습니다 로거 # 침묵을
ActiveRecord::Base.logger.silence do # the stuff you want to be silenced end
-
==============================
4.레일 4를 들어 당신은 환경 파일에 다음을 넣을 수 있습니다 :
레일 4를 들어 당신은 환경 파일에 다음을 넣을 수 있습니다 :
# /config/environments/development.rb config.active_record.logger = nil
-
==============================
5.경우에는 누군가가 실제로 SQL 문 로깅을 노크하고 싶어 (로깅 수준을 변경하지 않고, 자신의 AR 모델에서 로깅을 유지하면서)
경우에는 누군가가 실제로 SQL 문 로깅을 노크하고 싶어 (로깅 수준을 변경하지 않고, 자신의 AR 모델에서 로깅을 유지하면서)
50 : (어쨌든, 레일 3.2.16)에 로그에 기록 라인은 호출에 디버그 lib 디렉토리 / active_record / log_subscriber.rb입니다.
즉, 디버그 방법은 ActiveSupport에 의해 정의된다 :: LogSubscriber.
그래서 우리는 지금처럼 덮어 쓰기하여 로깅을 노크 할 수 있습니다 :
module ActiveSupport class LogSubscriber def debug(*args, &block) end end end
-
==============================
6.= config.log_level : 나는 이것을 사용 정보를 에서 편집 설정 / 환경 / performance.rb
= config.log_level : 나는 이것을 사용 정보를 에서 편집 설정 / 환경 / performance.rb
나를 위해 좋은 작업 SQL 출력을 거부 만 렌더링 및 중요한 정보를 표시합니다.
-
==============================
7.레일 3.2에서 나는 설정 / 환경 / development.rb이 같은 일을 해요 :
레일 3.2에서 나는 설정 / 환경 / development.rb이 같은 일을 해요 :
module MyApp class Application < Rails::Application console do ActiveRecord::Base.logger = Logger.new( Rails.root.join("log", "development.log") ) end end end
-
==============================
8.그냥 참고로, 레일 2에서 당신이 할 수있는 등
그냥 참고로, 레일 2에서 당신이 할 수있는 등
ActiveRecord::Base.silence { <code you don't want to log goes here> }
당신이 원하는 경우에 분명히 중괄호는 DO 엔드 블록으로 대체 할 수있다.
from https://stackoverflow.com/questions/7759321/disable-rails-sql-logging-in-console by cc-by-sa and MIT license
'RUBY-ON-RAILS' 카테고리의 다른 글
[RUBY-ON-RAILS] 하나의 응용 프로그램에 여러 도메인을 처리하기 위해 라우팅 난간 (0) | 2020.02.09 |
---|---|
[RUBY-ON-RAILS] 레일과 루비 1.9와 잘못된 멀티 바이트 문자 (US-ASCII) (0) | 2020.02.09 |
[RUBY-ON-RAILS] 어떻게 Ajax 요청과 레일의 플래시를 처리하나요? (0) | 2020.02.09 |
[RUBY-ON-RAILS] 모델이 이미 존재하는 경우 어떻게`레일을 생성 scaffold`를 실행하려면? (0) | 2020.02.09 |
[RUBY-ON-RAILS] 어떻게 특정 마이그레이션을 롤백? (0) | 2020.02.09 |