2012-07-28 74 views
3

有沒有任何選項瓶側,可以保持服務器像WSGIRef粘貼輸出一個線路收到每個請求?有沒有辦法讓Bottle服務器不那麼冗長?

注:我知道有一個安靜的選擇,但我不希望整個器件的應用保持沉默,只是請求日誌。

它非常快速地變得非常混亂,尤其是考慮到我想打印調試信息時不時地混亂。下面是一個單一的頁面負載的輸出,它可能會得到很多大時,我的項目增長了一點:

 
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 2012-07-28 02:13:58

+0

雖然這是爲了發展 - Apache有點硬核。此外,Bottle的重新啓動程序將不起作用 – Hubro 2012-07-28 02:18:10

+3

如果沒有人有真正的解決方案,您可以將輸出傳遞給'grep -Ev'(GET | POST)' – jordanm 2012-07-28 02:20:22

回答

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) 
相關問題