根据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 指令,请求也不会被记录。有什么想法吗?
最佳答案
我已经构建了一个示例解决方案,其中包含喷射路由以及您的路由功能和配置。我确实看到了与您的 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。
关于logging - 为什么 logRequest 不记录请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27205304/