2009-04-07 7 views
46

Thường khi tôi viết mã, tôi chỉ muốn in những thứ nhỏ (chủ yếu là giá trị hiện tại của biến) ra bàn điều khiển. Tôi không thấy bất cứ điều gì như thế này cho Google App Engine, mặc dù tôi lưu ý rằng Trình khởi chạy ứng dụng Google không có thiết bị đầu cuối Đăng nhập. Có cách nào để viết cho Thiết bị đầu cuối đã nói hay với một số thiết bị đầu cuối khác, sử dụng Google App Engine không?Làm cách nào để ghi vào bảng điều khiển trong Google App Engine?

Trả lời

64

Bạn sẽ muốn sử dụng mô-đun chuẩn logging của Python.

import logging 

logging.info("hello") 
logging.debug("hi") # this won't show up by default 

Để xem các cuộc gọi đến logging.debug() trong GoogleAppEngineLauncher Logs console, trước tiên bạn phải thêm cờ --dev_appserver_log_level=debug để ứng dụng của bạn. Tuy nhiên, hãy cẩn thận rằng bạn sẽ thấy rất nhiều tiếng ồn gỡ rối từ bản thân App Engine SDK. Các full set of levels là:

  • debug
  • info
  • warning
  • error
  • critical

Bạn có thể thêm lá cờ bằng cách nhấp đúp ứng dụng và sau đó thả nó vào Cờ bổ sung trường.

Adding the --dev_appserver_log_level flag to your app in the GoogleAppEngineLauncher

+5

Đây là phản hồi hữu ích nhất. Nó xứng đáng được thông báo – zehelvion

+1

Theo [câu trả lời gần đây hơn] (http://stackoverflow.com/a/22467787/346561), bạn nên sử dụng cờ bổ sung '--log_level = debug' thay vì' --debug'. –

+0

Cảm ơn, @JesseWebb. Đã cập nhật. –

31

Xem https://cloud.google.com/appengine/docs/python/requests#Python_Logging
http://docs.python.org/library/logging.html

Bạn có thể muốn sử dụng cái gì đó như:

logging.debug("value of my var is %s", str(var)) 
+1

Làm thế nào tôi có thể làm điều tương tự trong java? – Manjoor

+14

Bạn rất có thể muốn sử dụng logging.info() thay vì logging.debug() vì mức ghi mặc định trong bảng điều khiển Nhật ký GoogleAppEngineLauncher là bạn sẽ không thấy bất kỳ lệnh gọi nào để logging.debug(). –

+0

Liên kết đầu tiên tới Ghi nhật ký cho Python GAE bị hỏng. Nó sẽ được cập nhật thành https://cloud.google.com/appengine/docs/python/requests#Python_Logging –

9

@Manjoor

Bạn có thể làm điều tương tự trong java.

import java.util.logging.Logger; 
// ... 

public class MyServlet extends HttpServlet { 
    private static final Logger log = Logger.getLogger(MyServlet.class.getName()); 

    public void doGet(HttpServletRequest req, HttpServletResponse resp) 
      throws IOException { 

     log.info("An informational message."); 

     log.warning("A warning message."); 

     log.severe("An error message."); 
    } 
} 

Xem "Logging" trong http://code.google.com/appengine/docs/java/runtime.html

1

Kiểm tra phiên dịch trực tuyến Python của tôi chạy trên Google App Engine trên trang web của tôi, Learn Python. Nó có thể là những gì bạn đang tìm kiếm. Chỉ cần sử dụng print repr (biến) trên những thứ bạn muốn xem và thực thi bao nhiêu lần tùy thích.

0

GAE sẽ chụp sai số chuẩn và in nó ra cửa sổ Console hoặc một bản ghi.

print >> sys.stderr, "Something to log." 
0

Sử dụng log.setLevel (Level.ALL) để xem thông điệp

Mức lọc nhắn mặc định có vẻ là 'lỗi'. Tôi không thấy bất kỳ thông điệp tường trình hữu ích nào cho đến khi tôi sử dụng phương thức setLevel() để làm cho thông điệp .info và .warning hiển thị.

Văn bản được in tới System.out cũng không hiển thị. Dường như nó được hiểu là các messaages mức log.info().

1

Xin chào Tôi đang sử dụng phiên bản 1.8.6 của GoogleAppEngineLauncher, bạn có thể sử dụng một lá cờ để thiết lập các thông điệp log mức độ bạn muốn xem, ví dụ cho thông điệp debug:

--dev_appserver_log_level debug

Sử dụng nó thay vì --debug (xem câu trả lời của @Christopher).

4

Nếu bạn đang sử dụng một phiên bản mới hơn của sự phát triển máy chủ Python (phiên bản> 1.7.6, hoặc tháng 3 năm 2013 và sau này), nhưng dường như là bước đi đúng đắn để sử dụng:

  1. Bao gồm sau trong kịch bản của bạn,

    import logging logging.debug("something I want to log")

  2. và mỗi this docs page, thiết lập một lá cờ bằng cách vào Edit> cài đặt ứng dụng> cài đặt Launch> thêm Command Line Flags, và thêm,

    --log_level=debug