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을 참조하십시오. 또한 당신은 스택 드라이버로 이동하여 모든 로그를 볼 수 있습니다 -> 로깅 ->이 로그 :

enter image description here

을 일단 거기, 당신은 응용 프로그램 버전에 따라 로그를 필터링 할 수 있습니다

enter image description here

또한 요청에 따라 때로는 특정 종류의 로그 만 볼 수 있습니다. 나는 유연한 애플리케이션 엔진의 quickstart에 코드를 붙여 내가이있어 :

........... 

    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 

.......... 

이 외에도, 당신은 Stackdriver Logging Client Libraries를 사용할 수 있습니다. 먼저 POM 종속성이 추가

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

는 다음 quickstart을 사용하고 HelloServlet.java에서이 코드를 붙여 넣습니다

. 코드는 다음과 같습니다

enter image description here

:

@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); 

} 

당신은 스택 드라이버에서이 결과를 볼 수 있습니다