Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Newer
Older
100644 77 lines (49 sloc) 3.265 kb
4ee2065 @abedra Initial conversion
abedra authored
1 # Logging
2
727bf48 Formatting and correcting errors in README
Alexander Taggart authored
3 Logging macros which delegate to a specific logging implementation. At runtime a specific implementation is selected from, in order, Apache commons-logging, slf4j, log4j, and finally java.util.logging.
4
5 Logging levels are specified by clojure keywords corresponding to the values used in log4j and commons-logging:
4ee2065 @abedra Initial conversion
abedra authored
6
7 :trace, :debug, :info, :warn, :error, :fatal
8
727bf48 Formatting and correcting errors in README
Alexander Taggart authored
9 Logging occurs with the log macro, or the level-specific convenience macros, which write either directly or via an agent. The log macros will not evaluate their 'message' unless the specific logging level is in effect. Alternately, you can use the spy macro when you have code that needs to be evaluated, and also want to output the code and its result to the log.
10
11 Unless otherwise specified, the current namespace (as identified by *ns*) will be used as the log-ns (similar to how the java class name is usually used). Note: your log configuration should display the name that was passed to the logging implementation, and not perform stack-inspection, otherwise you'll see some ugly and unhelpful text in your logs.
12
13 Use the enabled? macro to write conditional code against the logging level (beyond simply whether or not to call log, which is handled automatically).
14
15 You can redirect all java writes of System.out and System.err to the log system by calling log-capture!. To bind *out* and *err* to the log system invoke with-logs. In both cases a log-ns (e.g., \"com.example.captured\") must be specified in order to namespace the output.
4ee2065 @abedra Initial conversion
abedra authored
16
17 ## Usage
18
f5b9255 @abedra Adding a small code example to demonstrate usage
abedra authored
19 The following short example should give you what you need to get started:
20
21 (ns example.core
22 (:use [clojure.tools.logging :only (info error)]))
23
24 (defn divide [one two]
25 (try
26 (info "Calculated" (/ one two))
286f891 @abedra Edited README.md via GitHub
abedra authored
27 (catch Exception ex
727bf48 Formatting and correcting errors in README
Alexander Taggart authored
28 (error ex "There was an error in calculation"))))
f5b9255 @abedra Adding a small code example to demonstrate usage
abedra authored
29
4ee2065 @abedra Initial conversion
abedra authored
30 For those new to using a java logging library, the following is a very basic configuration for log4j. Place it in a file called \"log4j.properties\" and place that file (and the log4j JAR) on the classpath.
31
32 log4j.rootLogger=WARN, A1
33 log4j.logger.user=DEBUG
34 log4j.appender.A1=org.apache.log4j.ConsoleAppender
35 log4j.appender.A1.layout=org.apache.log4j.PatternLayout
36 log4j.appender.A1.layout.ConversionPattern=%d %-5p %c: %m%n
37
38 The above will print messages to the console for :debug or higher if one is in the user namespace, and :warn or higher in all other namespaces.
39
40 ### "Installation"
41
42 Logging is available in Maven central. Add it to your Maven project's `pom.xml`:
43
44 <dependency>
45 <groupId>org.clojure</groupId>
46 <artifactId>tools.logging</artifactId>
0f8cc01 @abedra Edited README.md via GitHub
abedra authored
47 <version>0.1.2</version>
4ee2065 @abedra Initial conversion
abedra authored
48 </dependency>
49
50 or your leiningen project.clj:
51
0f8cc01 @abedra Edited README.md via GitHub
abedra authored
52 [org.clojure/tools.logging "0.1.2"]
4ee2065 @abedra Initial conversion
abedra authored
53
54 Please note the changelog below.
55
56 ### Building Logging
57
58 0. Clone the repo
59 1. Make sure you have maven installed
60 2. Run the maven build; run either:
88dcece @abedra Correcting some errors in the README
abedra authored
61 1. `mvn install`: This will produce a logging jar file in the `target`
4ee2065 @abedra Initial conversion
abedra authored
62 directory, and run all tests with the most recently-released build
88dcece @abedra Correcting some errors in the README
abedra authored
63 of Clojure (currently 1.2.0).
4ee2065 @abedra Initial conversion
abedra authored
64
65 ## Thanks
66
67 * Chris Dean
68 * Phil Hagelberg
69 * Richard Newman
70 * Timothy Pratley
71
72 ## License
73
74 Copyright © 2009 Alex Taggart
75
76 Licensed under the EPL. (See the file epl.html.)
Something went wrong with that request. Please try again.