3

我浏览了整个Spark 文档,但没有看到任何关于日志记录的内容。我知道 Spark 使用Jetty Web 服务器的嵌入式版本,但似乎没有办法在不实际进入和更改 Spark 框架代码的情况下启用 Jetty 日志记录。

我希望所有对服务器的 HTTP 请求都以Common Log Format 记录。现在,当我启动服务器时,无论我向它发出多少请求,我都会看到这随后是静默:

[Thread-1] INFO spark.webserver.SparkServer - == Spark has ignited ...
[Thread-1] INFO spark.webserver.SparkServer - >> Listening on 0.0.0.0:4567
[Thread-1] INFO org.eclipse.jetty.server.Server - jetty-9.0.2.v20130417
[Thread-1] INFO org.eclipse.jetty.server.ServerConnector - Started ServerConnector@46f24fce{HTTP/1.1}{0.0.0.0:4567}

目前我最好的想法是在before过滤器中滚动我自己的日志记录系统。例如:

before((req, res) -> {
    System.out.println("Request from " + req.ip() + " received - " + req.userAgent());
});

但似乎这个功能应该内置到这个框架中,我只是没有看到它。我认为一个相对流行的 Web 框架(在 Github 上有超过 3,000 颗星)会为其 Web 服务器内置日志记录,对吗?

4

2 回答 2

0

老问题,但对于所有来到这里的人:只需在您的应用程序类中定义一个记录器,如下所示:

private static final Logger LOG = LoggerFactory.getLogger(YourCurrent.class);

现在您可以使用 spark 日志记录适配器记录您自己的消息。

LOG.error("missing whatever");
于 2016-04-22T14:39:37.077 回答
0

我不知道 spark 是什么,但如果 Jetty 不是太旧,你应该能够提供一个 slf4j 绑定(如果不使用 Simple 则可能记录实现),例如 Simple SLF4J。(见http://www.slf4j.org/manual.html

如果您使用简单 SLF4J 绑定,您可以通过 Javadoc 中记录的 JVM 系统属性对其进行配置(包括日志级别或日志文件):http ://www.slf4j.org/api/org/slf4j/impl/SimpleLogger.html

于 2015-10-05T20:28:52.753 回答