2012-07-28 2 views
3

WSGIRef 모든 요청 접수에 대한 행을 출력에서 ​​붙여 넣기 같은 서버를 유지할 수있는 병 측에 어떤 옵션 이 있습니까?병 서버를 간략하게 만드는 방법이 있습니까?

NB : 나는 조용한 옵션이 알고,하지만 전체 appication이 침묵하고 싶지 않아 그냥 요청 로그.

매우 빠르게 혼란 스럽습니다. 특히 디버그 정보를 지금 인쇄하고 싶다고 생각하면 혼란에 빠지게됩니다. 여기에 하나의 페이지로드에 대한 출력, 그리고 내 프로젝트가 약간 증가 할 때 아마 많은 더 큰 얻을 것이다 : 나는 과거에이 같은 짓을

 
Bottle server starting up (using WSGIRefServer())... 
Listening on http://0.0.0.0:8080/ 
Hit Ctrl-C to quit. 

localhost - - [28/Jul/2012 04:05:59] "GET /clients HTTP/1.1" 200 3129 
localhost - - [28/Jul/2012 04:05:59] "GET /static/css/main.css HTTP/1.1" 304 0 
localhost - - [28/Jul/2012 04:05:59] "GET /static/js/jquery-1.7.2.js HTTP/1.1" 304 0 
localhost - - [28/Jul/2012 04:05:59] "GET /static/js/jquery.cookie.js HTTP/1.1" 304 0 
localhost - - [28/Jul/2012 04:05:59] "GET /static/js/jquery.qtip.min.js HTTP/1.1" 304 0 
localhost - - [28/Jul/2012 04:05:59] "GET /static/js/showdown.js HTTP/1.1" 304 0 
localhost - - [28/Jul/2012 04:05:59] "GET /static/js/proj.js HTTP/1.1" 304 0 
localhost - - [28/Jul/2012 04:05:59] "GET /static/css/reset.css HTTP/1.1" 304 0 
localhost - - [28/Jul/2012 04:06:00] "GET /static/images/flag_gb.png HTTP/1.1" 304 0 
localhost - - [28/Jul/2012 04:06:00] "GET /static/images/flag_no.png HTTP/1.1" 304 0 
localhost - - [28/Jul/2012 04:06:00] "GET /static/images/icon_add.png HTTP/1.1" 304 0 
localhost - - [28/Jul/2012 04:06:00] "GET /favicon.ico HTTP/1.1" 404 742 
+0

전달합니다. – jordanm

+0

이것은 개발을위한 것입니다 - 아파치는 약간 하드 코어입니다. 또한 Bottle의 리 스타터가 작동하지 않을 것입니다 – Hubro

+3

아무도 진짜 해결책이 없다면 출력을'grep -Ev '(GET | POST)로 파이프 할 수 있습니다.' – jordanm

답변

1

. 다른 종류의 서버의 경우 로그 처리기를 덮어 쓰면 원하지 않는 로그를 필터링 할 수 있습니다. 나는 Bottle에서 코드를 복사하고 나만의 ServerAdapter를 만들었다. 아래는 WSGI 서버 코드이다. 저 자신의 핸들러 클래스 인 log_request 함수를 무시하고 원래 log_request를 오버라이드 한 다음 함수에 전달 된 응답 코드를 기반으로 메시지를 필터링하는 조용한 기능과 비슷합니다.

내장 된 BaseHTTPServer 모듈에서 log_request 함수를 복사하고 if 문을 추가했습니다. 당신이 병을 시작할 때 mod_wsgi에 대신, 아파치가 액세스 및 오류 로그를 분할 할 사용한 경우

다음, 그것을 고객 serverAdapter

from bottle import route, run, template 
import bottle 

@route('/hello/:name') 
def index(name='World'): 
    print "Debug Print Statement" 
    return template('<b>Hello {{name}}</b>!', name=name) 

class WSGIRefServer(bottle.ServerAdapter): 
    def run(self, handler): # pragma: no cover 
     from wsgiref.simple_server import make_server, WSGIRequestHandler 

     class LogHandler(WSGIRequestHandler): 
      def log_request(self, code='-', size='-'): 
       """Log an accepted request. 

       This is called by send_response(). 

       """ 
       if code not in ["200", "304"]: 
        self.log_message('"%s" %s %s', 
            self.requestline, str(code), str(size)) 

     self.options['handler_class'] = LogHandler 
     srv = make_server(self.host, self.port, handler, **self.options) 
     srv.serve_forever() 


run(host='localhost', server=WSGIRefServer, port=8080) 
관련 문제