【问题标题】:Google App Flexible Java Logging Not WorkingGoogle App 灵活的 Java 日志记录不起作用
【发布时间】:2017-12-17 01:10:22
【问题描述】:

我有一个简单的 servlet,如下所示。而且我无法在 gcloud 日志中看到任何 System.out 或 log.info。我用gcloud app logs tail -s my-app-name。我只看到 GET 和 favicon 的日志。请帮助在我的谷歌云应用中启用日志。

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

}

【问题讨论】:

    标签: java google-app-engine logging google-cloud-platform app-engine-flexible


    【解决方案1】:

    你可以这样使用命令:

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

    为了指定服务和版本,请查看如果您没有真正获取所有日志。查看所有选项列表here。您还可以转到 Stackdriver -> Logging -> Logs 查看所有日志:

    在那里,您可以按应用版本过滤日志:

    另外请注意,根据您提出的请求,有时您只会看到某些类型的日志。我将您的代码粘贴到了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 中。您的代码如下所示:

    @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 中看到这个结果:

    【讨论】:

      猜你喜欢
      • 2017-04-11
      • 1970-01-01
      • 2021-11-19
      • 1970-01-01
      • 1970-01-01
      • 2018-08-24
      • 2011-12-27
      • 2013-04-27
      • 1970-01-01
      相关资源
      最近更新 更多