0

以下のような単純なサーブレットがあります。そして、私はgcloudログにSystem.outまたはlog.infoを見ることができません。私はgcloud app logs tail -s my-app-nameを使用しました。私はGETとfaviconのログしか見ることができません。 Googleのクラウドアプリにログを有効にするのを助けてください。あなたが本当にすべてのログを取得していないかどうかを確認し、その後、サービスおよびバージョンを指定するためにGoogle AppフレキシブルなJavaロギングが機能しない

gcloud app logs tail --service=my-service --version=my-app-version 

:あなたはコマンドをこのように使用することができます

@SuppressWarnings("serial") 
@WebServlet(name = "Home", description = "Write low order IP address to response", urlPatterns = "/") 
public class HomeServlet extends HttpServlet { 
    Logger logger = Logger.getLogger(HomeServlet.class.getName()); 
    Connection conn; 

    @Override 
    public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException, ServletException { 
     if(logger.isLoggable(Level.FINE)) { 
      log("FINE is loggable."); 
      System.out.println("This is System Out. FINE is loggable"); 
      logger.fine("Received GET request"); 
     } else { 
      log("FINE is not loggable"); 
      System.out.println("This is System Out. FINE is not loggable"); 
      logger.severe("Received GET request"); 
     } 
     String path = req.getRequestURI(); 
     if (path.startsWith("/favicon.ico")) { 
      return; // ignore the request for favicon.ico 
     } 

     PrintWriter out = resp.getWriter(); 
     resp.setContentType("text/plain"); 

     String userIp = req.getRemoteAddr(); 
     out.print("Your IP is: " + userIp); 
     log("responded GET request from: " + userIp); 
    } 

} 

答えて

1

。すべてのオプションのリストhereを参照してください。また、あなたはのStackdriverに行くことによって、すべてのログを見ることができます - > [ロギング - >がログに記録:

enter image description here

を一度そこに、あなたはアプリのバージョンでログをフィルタすることができます

enter image description here

また、要求に応じて、特定の種類のログしか表示されないことがあります。あなたがStackdriver Logging Client Librariesを使用することができ、これに加えて

........... 

    2017-12-18 09:40:07 my-service[my-app-version] "GET /favicon.ico" 200 
    2017-12-18 09:40:07 my-service[my-app-version] "GET /" 200 
    2017-12-18 09:40:07 my-service[my-app-version] "GET /favicon.ico" 200 
    2017-12-18 09:40:08 my-service[my-app-version] "GET /" 200 
    2017-12-18 09:40:13 my-service[my-app-version] org.eclipse.jetty.server.handler.ContextHandler.root: com.example.appengine.gettingstartedjava.helloworld.HomeServlet: FINE is not loggable 
    2017-12-18 09:40:13 my-service[my-app-version] com.example.appengine.gettingstartedjava.helloworld.HomeServlet: Received GET request 
    2017-12-18 09:40:13 my-service[my-app-version] org.eclipse.jetty.server.handler.ContextHandler.root: com.example.appengine.gettingstartedjava.helloworld.HomeServlet: responded GET request from: 35.187.117.231 
    2017-12-18 09:40:13 my-service[my-app-version] This is System Out. FINE is not loggable 
    2017-12-18 09:40:15 my-service[my-app-version] This is System Out. FINE is not loggable 

.......... 

:私は、柔軟なアプリエンジン用quickstartであなたのコードを貼り付けて、私はこれを得ました。まず、あなたのPOMの依存関係にこれを追加します。

<dependency> 
    <groupId>com.google.cloud</groupId> 
    <artifactId>google-cloud-logging</artifactId> 
    <version>1.14.0</version> 
</dependency> 

その後、quickstartを使用してHelloServlet.javaにこのコードを貼り付けます。あなたのコードは次のようになります。

@Override 
public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException { 
    PrintWriter out = resp.getWriter(); 
    out.println("Hello, world - Flex Servlet"); 

    Logging logging = LoggingOptions.getDefaultInstance().getService(); 

    String logName = "My-log"; 

    String text = "Hello World"; 

    LogEntry entry = LogEntry.newBuilder(StringPayload.of(text)).setSeverity(Severity.ERROR).setLogName(logName) 
      .setResource(MonitoredResource.newBuilder("global").build()).build(); 

    logging.write(Collections.singleton(entry)); 

    System.out.printf("Logged: %s%n", text); 

} 

あなたはのStackdriverでこの結果を見ることができます:

enter image description here

関連する問題