【发布时间】:2015-07-12 20:01:05
【问题描述】:
我正在关注this tutorial 在我的 Clojure Web 应用程序中设置应用程序日志记录,我将使用该应用程序进行一些 Datomic 实验。该教程建议我只需将 Clojure 的 clojure.tools.logging 库添加到我在 Leiningen 中的项目依赖项中,并且输出应该只显示在我的控制台上。但是,在启动应用程序时,我在控制台或其他地方没有看到任何日志记录输出。我做错了什么?
我的设置如下。我的 Web 堆栈是 Ring/Compojure,作为嵌入式 Jetty 独立 JAR(使用 ring.adapter.jetty)运行,具有尚未使用数据库的虚拟 API 路由。
我的project.clj(注意:我正在评估 Datomic 的专业版,所以我在项目之外进行了 GPG 设置,以便正确下载这个受保护的 JAR): p>
(defproject helloworld "0.1.0-SNAPSHOT"
:description "FIXME: write description"
:url "http://example.com/FIXME"
:min-lein-version "2.0.0"
:repositories {
"my.datomic.com" {:url "https://my.datomic.com/repo" :creds :gpg}}
:dependencies [[org.clojure/clojure "1.6.0"]
[compojure "1.3.1"]
[ring/ring-defaults "0.1.2"]
[ring/ring-json "0.3.1"]
[ring/ring-defaults "0.1.2"]
[ring/ring-jetty-adapter "1.4.0"]
[org.clojure/tools.logging "0.3.1"]
[com.datomic/datomic-pro "0.9.5198" :exclusions [joda-time]]
[joda-time "2.8.1"]]
:plugins [[lein-ring "0.8.13"]]
:ring {:handler helloworld.handler/app}
:main helloworld.core
:aot [helloworld.core]
:profiles
{:dev {:dependencies [[javax.servlet/servlet-api "2.5"]
[ring-mock "0.1.5"]]}})
文件src/helloworld/core.clj:
(ns helloworld.core
(:require [clojure.tools.logging :as log]
[ring.adapter.jetty :as jetty]
[helloworld.handler :refer [app]])
(:gen-class))
(defn -main [& args]
(println "Hello, world!")
(log/info "Service is running!")
(jetty/run-jetty app {:port 8080}))
Compojure 应用和 API 处理程序,src/helloworld/handler.clj:
(ns helloworld.handler
(:require [clojure.tools.logging :as log]
[compojure.core :refer :all]
[compojure.route :as route]
[ring.middleware.defaults :refer [wrap-defaults api-defaults]]
[ring.middleware.json :as json-middleware]
[ring.util.response :refer [response]]))
(def dummy-entity {:id 1 :name "Hello, world!"})
(defroutes app-routes
(GET "/" []
(log/info "Getting all the things!")
(response [dummy-entity]))
(route/not-found "Not Found"))
(def app
(->
(wrap-defaults app-routes api-defaults)
(json-middleware/wrap-json-body)
(json-middleware/wrap-json-response)))
这是我尝试运行它时看到的(这也是在几次点击默认端点之后):
$ lein run
Hello, world!
所以println 肯定有效,但日志记录似乎没有。
【问题讨论】:
标签: logging clojure ring datomic