2015-10-05 26 views
3

我瀏覽了整個Spark documentation,但沒有看到有關記錄的任何信息。我知道Spark使用Jetty web server的嵌入式版本,但似乎可能沒有辦法啓用Jetty日誌記錄,而無需實際進入並更改Spark框架代碼。有什麼辦法可以在Spark上啓用簡單的Web服務器HTTP請求日誌記錄?

我希望能夠將所有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 [email protected]{HTTP/1.1}{0.0.0.0:4567} 

我目前最好的辦法是推出自己的日誌記錄系統中的before過濾器。例如:

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

但似乎這一功能應該被內置到這個框架中,而我只是沒有看到它。我想,一個比較流行的Web框架(有超過3000名星on Github)將有日誌記錄的內置了它的Web服務器,對不對?

+0

你有沒有得到一個合適的解決方案? – thebiggestlebowski

回答

0

我不知道是什麼樣的火花,但如果碼頭是不是太舊那裏,你應該能夠提供一個SLF4J綁定(如果沒有使用簡單一個可能日誌實現),如簡單SLF4J。 (見http://www.slf4j.org/manual.html

如果使用簡單SLF4J綁定,您可以將其配置(包括日誌級別或日誌文件)通過JVM系統屬性中的Javadoc文檔:http://www.slf4j.org/api/org/slf4j/impl/SimpleLogger.html

+1

謝謝,但該wiki頁面是一個類似命名但完全不同的項目。這裏是我指的Spark框架的鏈接:https://github.com/perwendel/spark –

0

老問題,但對於所有即將在這裏:只要在您的應用程序類中定義一個記錄器,如下所示:

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

現在您可以使用火花記錄適配器記錄自己的消息。

LOG.error("missing whatever"); 
相關問題