2012-07-21 40 views
1

有沒有一種優雅的方式來檢測我的谷歌應用程序引擎應用程序在嚮應用程序發出請求期間是否發生錯誤,並在出現更詳細的日誌時寫出它?檢測錯誤以改善Google App Engine中的錯誤日誌記錄Python

我有相當多的「調試」級別的日誌記錄,但我想刪除所有這些,並只顯示錯誤發生時的調試信息。

+0

你可以編寫一個自定義日誌過濾器來實現這一點您的最終目標是減少您爲非錯誤請求生成的日誌量? – 2012-07-22 00:01:45

+0

是的,尼克,那正是我想要的。 – 2012-07-22 00:27:29

回答

1

如果您正在使用webapp2的,我建議的下一個代碼的請求過程中做到這一點:

app = webapp2.WSGIApplication(debug = os.environ['SERVER_SOFTWARE'].startswith('Dev'), config=config.webapp2_config) 

app.error_handlers[404] = handle_error 
app.error_handlers[500] = handle_error 
routes.add_routes(app) 

您可以看到該了handle_error下面的例子: https://github.com/coto/gae-boilerplate/blob/master/boilerplate/lib/basehandler.py#L70

+0

這真是太棒了。我不知道你可以做任何事情。現在我的未來有很多活動。 =) – 2012-07-22 23:08:06

+0

儘管有用,但這並不能真正回答原來的問題。 – 2012-07-23 04:05:13

0

您需要從LogService API文檔開始;獲取並過濾一些request_logs(請記住包含app_logs);對於任何req_log,你可以得到相關的app_logs。任何app_log都有三個屬性(時間,級別和消息)。你要找的是消息屬性。

req_logs = logservice.fetch(start_time=time.time() - 3600, 
          end_time=time.time(), 
          minimum_log_level=logservice.LOG_LEVEL_ERROR, 
          include_app_logs=True) 
for req_log in req_logs: 
    for app_log in req_log.app_logs: 
     print app_log.message 
+0

OP詢問如何避免記錄不需要的信息,而不是如何讀取日誌。 – 2012-07-23 04:05:30

+0

我後來明白了。我該怎麼辦?我寧願留給那些訪問過的人 – 2012-07-23 04:48:06