用Clojure编写REST service 六 使用log4j
2013-01-02 19:55
246 查看
由于logback暂时不能用,所以这里先用log4j顶一下。
project.clj文件如下:
(defproject my-website "0.1.0"
:description "example rest service"
:dependencies [[org.clojure/clojure "1.4.0"]
[com.novemberain/monger "1.4.1"]
[log4j/log4j "1.2.16" :exclusions [javax.mail/mail
javax.jms/jms
com.sun.jdmk/jmxtools
com.sun.jmx/jmxri]]
[org.clojure/tools.logging "0.2.4"]
[noir "1.3.0-beta3"]]
:main my-website.server)
就是添加了log4j和tools.logging 依赖。
src目录下添加一个log4j.properties文件:
log4j.rootLogger=DEBUG, FILE
log4j.addivity.org.apache=true
log4j.appender.FILE=org.apache.log4j.FileAppender
log4j.appender.FILE.File=/opt/web.log
log4j.appender.FILE.Append=false
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n
第一行DEBUG指的是严重级别大于DEBUG的,都会记录到日志中。FILE是Appender的名称,后面几行配置了/opt/web.log文件以及日志格式。
server.clj文件:
(ns my-website.server
(:require [noir.server :as server])
(:use [clojure.tools.logging :only (info error)]))
(server/load-views-ns 'my-website.views)
(server/load-views-ns 'my-website.rest.test)
(defn -main [& m]
(org.apache.log4j.BasicConfigurator/configure)
(info "enter -main")
(let [mode (keyword (or (first m) :dev))
port (Integer. (get (System/getenv) "PORT" "8080"))]
(server/start port {:mode mode
:ns 'my-website})))
里面第三行引入了tools.looging,并且设定了只允许使用info和error。在-main函数中第一行是必须的(org.apache.log4j.BasicConfigurator/configure), 否则log4j会报错。
之后(info ...) 就是记录日志。
我这里还遇到一个问题,lein run不能将resources/log4j.properties文件自动复制到target/classes目录下,所以每次我都是手动复制一次。
现在运行lein run,看到/opt/web.log日志了:
[framework] 2013-01-02 19:54:38,873 - my-website.server -0 [main] INFO my-website.server - enter -main
这篇博客http://www.paullegato.com/blog/log4j-clojure/?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+clojure+(Planet+Clojure0提到[null] 的问题。但是我这里发现只需要在log4j.properties文件中在ConversionPattern里面指定[framework]就解决了。
project.clj文件如下:
(defproject my-website "0.1.0"
:description "example rest service"
:dependencies [[org.clojure/clojure "1.4.0"]
[com.novemberain/monger "1.4.1"]
[log4j/log4j "1.2.16" :exclusions [javax.mail/mail
javax.jms/jms
com.sun.jdmk/jmxtools
com.sun.jmx/jmxri]]
[org.clojure/tools.logging "0.2.4"]
[noir "1.3.0-beta3"]]
:main my-website.server)
就是添加了log4j和tools.logging 依赖。
src目录下添加一个log4j.properties文件:
log4j.rootLogger=DEBUG, FILE
log4j.addivity.org.apache=true
log4j.appender.FILE=org.apache.log4j.FileAppender
log4j.appender.FILE.File=/opt/web.log
log4j.appender.FILE.Append=false
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n
第一行DEBUG指的是严重级别大于DEBUG的,都会记录到日志中。FILE是Appender的名称,后面几行配置了/opt/web.log文件以及日志格式。
server.clj文件:
(ns my-website.server
(:require [noir.server :as server])
(:use [clojure.tools.logging :only (info error)]))
(server/load-views-ns 'my-website.views)
(server/load-views-ns 'my-website.rest.test)
(defn -main [& m]
(org.apache.log4j.BasicConfigurator/configure)
(info "enter -main")
(let [mode (keyword (or (first m) :dev))
port (Integer. (get (System/getenv) "PORT" "8080"))]
(server/start port {:mode mode
:ns 'my-website})))
里面第三行引入了tools.looging,并且设定了只允许使用info和error。在-main函数中第一行是必须的(org.apache.log4j.BasicConfigurator/configure), 否则log4j会报错。
之后(info ...) 就是记录日志。
我这里还遇到一个问题,lein run不能将resources/log4j.properties文件自动复制到target/classes目录下,所以每次我都是手动复制一次。
现在运行lein run,看到/opt/web.log日志了:
[framework] 2013-01-02 19:54:38,873 - my-website.server -0 [main] INFO my-website.server - enter -main
这篇博客http://www.paullegato.com/blog/log4j-clojure/?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+clojure+(Planet+Clojure0提到[null] 的问题。但是我这里发现只需要在log4j.properties文件中在ConversionPattern里面指定[framework]就解决了。
相关文章推荐
- 用Clojure编写REST service 五 使用logback(有bug)
- 用Clojure编写REST service 二 Noir创建Rest API
- 用Clojure编写REST service 一 Noir创建web app
- 用Clojure编写REST service 三 返回JSON
- 用Clojure编写REST service 四 读取配置文件
- 用Clojure编写REST service 七 启动时读取配置文件
- 使用RestSharp 库消费Restful Service
- Java使用Axis2调用NET编写的WCFService问题
- 【文档】使用Sphinx + reST编写文档
- 使用CXF创建REST WEBSERVICE
- 使用Spring与CXF编写rest服务
- 【JavaService】使用Java编写部署windows服务
- Clojure进阶:使用Clojure编写文字冒险游戏
- 使用jersey(2.5.1)编写Java REST客户端
- Clojure编写一个阶乘程序 使用递归
- AN开发范例实战宝典学习日记一:使用Service 、contentProvider编写的音乐播放器
- 使用Service.Stack客户端编写redis pub sub的方法
- java webservice 开发方法(REST方式)---续(父类写法及使用)
- 使用RestSharp 库消费Restful Service
- WCF Rest Service使用Unity实现依赖注入