레일 애플리케이션을 사용하고 있지만 개발/디버깅 후 로그 파일에서 전체 HTTP 요청을 볼 수있는 것이 매우 유용하다는 것을 깨달았습니다. .log뿐 아니라 매개 변수.레일에서 전체 HTTP 요청을 보는 방법
또한 세션이 아닌 사용자별로 별도의 로그 파일을 만들고 싶습니다.
어떤 아이디어라도 환영합니다!
당신은 신속 통해보기에서 request.env을 볼 수 있습니다
레일 애플리케이션을 사용하고 있지만 개발/디버깅 후 로그 파일에서 전체 HTTP 요청을 볼 수있는 것이 매우 유용하다는 것을 깨달았습니다. .log뿐 아니라 매개 변수.레일에서 전체 HTTP 요청을 보는 방법
또한 세션이 아닌 사용자별로 별도의 로그 파일을 만들고 싶습니다.
어떤 아이디어라도 환영합니다!
당신은 신속 통해보기에서 request.env을 볼 수 있습니다
천사 :
하는 경우 당신은 컨트롤러에서 개발 로그에 로그인하려고합니다 :
당신은 Request 객체에 대한 reference을 볼 수 있습니다.
Rails는 Ruby 표준 라이브러리의 Logger를 사용하여 log/디렉토리에있는 파일에 자동으로 로깅을 설정합니다. 로그 파일의 이름은 사용자 환경에 따라 지정됩니다. log/development.log. 당신이 그것을 인증하는 데 사용하고,
class YourController < ActionController::Base
def index
logger.info request.env
end
end
를 사용자 정보 :
는 로거 방법으로 레일 로거 인스턴스에 액세스, 컨트롤러 또는 모델 중 하나에서 메시지를 기록하려면?미들웨어가 요청할 때 랙 미들웨어를 사용하여 요청을 기록 할 수 있습니다 (http- 서버로 구문 분석되고 선행 미들웨어로 변환 됨). http-server가 이러한 기능을 지원할 경우 전체 요청을 기록하도록 http-server를 구성 할 수도 있습니다.
http-server (웹 서버)는 http 요청을 받고, 구문 분석하고, 응용 프로그램 서버 (예 : 랙 응용 프로그램)로 데이터 구조를 전송합니다. 응용 프로그램 서버는 원래 요청을 보지 못하지만 http 서버가 보내는 요청을 보게됩니다.
감사의 말, 훌륭한 팁. – akafazov
그 logger.info request.env
코드는 Rails 컨트롤러에서 정상적으로 작동하지만 더 오래된 버전을 보거나 Grape 또는 다른 탑재 된 앱을 사용하는 경우 랙 미들웨어를 통해 요청을 가로 채야합니다 application.rb
의 다른 config
의에 다음
require 'pp'
class Loggo
def initialize(app)
@app = app
end
def call(env)
pp env
@app.call(env)
end
end
: 체인 ...
은 (application.rb
의 하단 또는)이 lib 디렉토리에이 코드를 넣어
config.middleware.use "Loggo"
다음 : pp의 출력은이 미들웨어 체계에서 어디에 있습니까? – ericpeters0n
출력은 $ stdout으로 간다. 그래서 보통은 레일 서버가 시작된 콘솔에서 볼 수있다. – BitOfUniverse
처음에는 @AlexChaffee에 의해 코드 스 니펫을 사용했지만 이후에는 요청과 응답을 기록하는 특수 HTTP 프록시 인 mitmproxy을 사용하여 전환했습니다.
이것은 분명히 요청을하는 응용 프로그램을 제어 할 때 개발 시나리오에서만 유용합니다. 프로덕션 애플리케이션을위한 역방향 프록시를 사용하여 유사한 결과를 얻을 수도 있습니다 (이 경우 Rails 애플리케이션 자체를 만질 필요가 없다는 장점이 있습니다).
안녕하세요, 답장을 보내 주셔서 감사합니다. 나는 인증을 위해 authlogic을 사용하고있다. – akafazov
... 그러면 logger.info current_user.inspect는 친구가됩니다;). – microspino
이것은 내가 상상할 수없는 커다란 문자열을 돌려줍니다. – tschwab