gpt4 book ai didi

java - Google 应用程序灵活的 Java 日志记录不起作用

转载 作者:行者123 更新时间:2023-12-02 11:51:29 28 4
gpt4 key购买 nike

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

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

}

最佳答案

您可以这样使用命令:

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

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

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 中。您的代码将如下所示:

@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

关于java - Google 应用程序灵活的 Java 日志记录不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47851388/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com