根据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指令,也不会记录请求。有什么想法吗?
答案 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。