为什么logRequest不记录请求?

时间:2014-11-29 18:04:34

标签: logging spray

根据documentation,Spray允许用户记录请求和响应。

然而,由于某些原因,我似乎无法使其发挥作用。

这就是我在“路由方面”所拥有的内容

def generateRoute = pathPrefix("session") {
 logRequest("session reached") {
  path("new") {
    logRequest("session new reached") {
      post { entity(as[Initiate]) { sessionInfo =>
        logRequest("session new post reached") {
            complete("pass\n")
          }
        }
 /// the rest of the braces

以下是我配置中的内容:

akka {
  loglevel = DEBUG
  loggers = ["akka.event.slf4j.Slf4jLogger"]
}

这是我在日志中看到的内容:

app 11/29 13:02:35 DEBUG[sys-tracker-akka.actor.default-dispatcher-4] a.i.TcpListener - New connection accepted
app 11/29 13:02:36 DEBUG[sys-tracker-akka.actor.default-dispatcher-4] s.c.s.HttpServerConnection - Dispatching POST request to http://localhost:8080/session/new to handler Actor[akka://sys-tracker/system/IO-TCP/selectors/$a/1#2086889080]
app 11/29 13:02:36 DEBUG[sys-tracker-akka.actor.default-dispatcher-6] s.c.s.HttpServerConnection - Connection was PeerClosed, awaiting TcpConnection termination...
app 11/29 13:02:36 DEBUG[sys-tracker-akka.actor.default-dispatcher-4] s.c.s.HttpServerConnection - TcpConnection terminated, stopping

因此,即使我的路由中有logRequest指令,也不会记录请求。有什么想法吗?

1 个答案:

答案 0 :(得分:8)

我已经构建了一个带有喷涂路由的示例解决方案,以及您的路由功能和配置。我确实看到了与logRequest方法相对应的日志语句。输出包括传递给logRequest和HttpRequest的文本。

01:42:36.946 [SprayRoutingExample-akka.actor.default-dispatcher-2] DEBUG akka.actor.ActorSystemImpl - session new post reached: HttpRequest(POST,http://localhost:8080/session/new,List(Accept-Language: en-US, en, Accept-Encoding: gzip, deflate, Accept: */*, Content-Type: text/plain, Origin: chrome-extension://hgmloofddffdnphfgcellkdfbfbjeloo, User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.65 Safari/537.36, Content-Length: 4, Connection: keep-alive, Host: localhost:8080),HttpEntity(text/plain,test),HTTP/1.1)

尝试更改通话的日志级别,看看是否有任何区别

logRequest("session reached", akka.event.Logging.InfoLevel)

您使用什么作为具体的记录器实现。检查您的记录器配置是否正确。我使用了logback。