【问题标题】:Is there any way to enable simple web server HTTP request logging on Spark?有什么方法可以在 Spark 上启用简单的 Web 服务器 HTTP 请求日志记录?
【发布时间】:2016-01-02 14:40:33
【问题描述】:

我浏览了整个Spark documentation,但根本没有看到任何关于日志记录的内容。我知道 Spark 使用 Jetty web server 的嵌入式版本,但似乎没有办法在不实际进入和更改 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 框架(拥有超过 3,000 颗星 on Github)会为其 Web 服务器内置日志记录,对吗?

【问题讨论】:

  • 你有没有找到合适的解决方案?

标签: java jetty spark-java


【解决方案1】:

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

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

【讨论】:

  • 谢谢,但是那个 wiki 页面是用于一个名称相似但完全不同的项目。这是我所指的 Spark 框架的链接:github.com/perwendel/spark
【解决方案2】:

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

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

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

LOG.error("missing whatever");

【讨论】:

    猜你喜欢
    • 2023-02-09
    • 2014-06-13
    • 1970-01-01
    • 2017-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-15
    • 1970-01-01
    相关资源
    最近更新 更多