【问题标题】:Akka-http how to log server error responses?Akka-http 如何记录服务器错误响应?
【发布时间】:2016-10-11 20:00:05
【问题描述】:

我有一个使用 scala 和 akka-http 构建的 http 服务器。有没有办法可以记录发送给客户端的错误响应?

【问题讨论】:

    标签: scala akka-http


    【解决方案1】:

    你可以看一下文档LogResult Directive

    您可以在此处找到文档中显示的相同代码片段:

    // different possibilities of using logResponse
    
    // The first alternatives use an implicitly available LoggingContext for logging
    // marks with "get-user", log with debug level, HttpResponse.toString
    DebuggingDirectives.logResult("get-user")
    
    // marks with "get-user", log with info level, HttpResponse.toString
    DebuggingDirectives.logResult(("get-user", Logging.InfoLevel))
    
    // logs just the response status at debug level
    def responseStatus(res: RouteResult): String = res match {
      case RouteResult.Complete(x)          => x.status.toString
      case RouteResult.Rejected(rejections) => "Rejected: " + rejections.mkString(", ")
    }
    DebuggingDirectives.logResult(responseStatus _)
    
    // logs just the response status at info level
    def responseStatusAsInfo(res: RouteResult): LogEntry = LogEntry(responseStatus(res), Logging.InfoLevel)
    DebuggingDirectives.logResult(responseStatusAsInfo _)
    
    // This one doesn't use the implicit LoggingContext but uses `println` for logging
    def printResponseStatus(res: RouteResult): Unit = println(responseStatus(res))
    val logResultPrintln = DebuggingDirectives.logResult(LoggingMagnet(_ => printResponseStatus))
    
    // tests:
    Get("/") ~> logResultPrintln(complete("logged")) ~> check {
      responseAs[String] shouldEqual "logged"
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-01-30
      • 2014-08-09
      • 1970-01-01
      • 2017-09-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多