【问题标题】:REST server returns HTTP 404 error powered by Jetty, How to find server log entries?REST 服务器返回由 Jetty 提供支持的 HTTP 404 错误,如何查找服务器日志条目?
【发布时间】:2025-12-04 10:35:01
【问题描述】:

我在 FUSE ESB 6.1 中部署了一个 REST 应用程序。有许多服务暴露给外部客户端。 问题是,有时客户端会收到带有以下 html 的 HTTP 404 Not Found。

<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/>
<title>Error 404 Not Found </title>
</head>
<body>
<h2>HTTP ERROR: 404</h2>
<p>Problem accessing /context/api/service1. Reason:
<pre>    Not Found</pre></p>
<hr /><i><small>Powered by Jetty://</small></i>
</body>
</html>

我可以看出这是由于服务名称错误造成的。

但我在服务器日志中找不到任何相关的日志条目。 是否有任何选项可以在 REST 服务器中查看这些 Jetty 错误详细信息?可能有任何 Jetty 日志?

【问题讨论】:

  • 您正在查看日志。你还期待什么?这与请求不存在的图像没有什么不同。你得到一个 404 未找到。由于这种情况经常发生,Web 服务器通常不会记录此类客户端错误。你想告诉服务器记录这些类型的错误吗?
  • 我猜只是代码(服务器端或客户端,具体取决于您创建 URL 的方式)没有为 REST 端点创建正确的 URL。
  • 是的,是因为网址错误。但是我怎样才能打开服务器日志来记录这一点。我需要记录一段特定的时间,以了解客户的活动。
  • 执行时是否使用 logging.properties?您可能需要更改日志记录级别。尝试将其设置为 FINEST。你的动词是否正确(例如 GET 与 POST)

标签: java rest fuseesb


【解决方案1】:

与任何 servlet 容器一样,您可以将 404 错误重定向到 JSP、servlet 等,并且只需自己记录 URL。

来自Jetty documentation

错误代码示例:

<error-page>
  <error-code>404</error-code>
  <location>/jspsnoop/ERROR/404</location>
</error-page>

异常示例:

<error-page>
  <exception-type>java.io.IOException</exception-type>
  <location>/jspsnoop/IOException</location>
</error-page>

您还可以捕获应用程序上下文之外发生的 404 错误:

服务器级别 404 错误

当向 任何已注册上下文之外的资源的服务器。作为 例如,您有一个指向您的公共服务器 IP 的域名, 但是没有向 Jetty 注册上下文来为其提供页面 领域。因此,默认情况下,服务器会列出 服务器上运行的所有上下文。

避免这种行为的最快方法之一是创建一个捕获 所有上下文。创建一个映射到“/” URI 的“根”Web 应用程序,并使用 index.html 重定向到带有标头指令的任何位置。

【讨论】:

    最近更新 更多