在Clojure中使用compojure.route/not-found时获取http请求

在Clojure中使用compojure.route/not-found时获取http请求,clojure,compojure,Clojure,Compojure,我正在使用Cloujre的Compojure构建一个服务器。默认路由是compojure.route/notfound,是否有方法获取到达此路由的请求?我想打印所有最后到达那里的请求。您可以使用这种方法: (def handler (-> your-routes wrap-my-request-middleware ;; it has to be in this order ...)) 让我们在这里登录uri (defn

我正在使用Cloujre的Compojure构建一个服务器。默认路由是
compojure.route/notfound
,是否有方法获取到达此路由的请求?我想打印所有最后到达那里的请求。

您可以使用这种方法:

(def handler (-> your-routes
                 wrap-my-request-middleware ;; it has to be in this order
                 ...))
让我们在这里登录uri

(defn wrap-my-request-middleware
  [handler]
  (fn [request]
    (let [response   (handler request)]
      (when (= 404 (:status response))
        ;; do whatever you like in here
        (log/info (str "Request path: " (:uri request))))
      response)));; fn needs to return reponse...

它不工作,它还使整个服务器发送一个500error@shakedzy这种方法看起来是合法的;您的500错误的内容是什么?我得到这个:HTTP错误:500访问问题/。原因:响应映射由Jetty供电为nil://-日志记录确实发生,但仍然..我已编辑了答案,以便代码可以工作-此处理程序需要是最后一个(因为它调用之前的处理程序),并且必须返回
响应
,这就是导致500个问题的原因。它是用于演示的。在任何情况下,您都需要返回响应