First, c.c.logging was intended as a wrapper around some java logging
lib.  There's a plethora of them, so I saw no reason to add another.

As for "simple out of the box logging", it's there (sort of) via
java.util.logging, and it defaults writing to stdout at INFO level.
That said, I'm inclined to use log4j.

Also take a look at the master branch[1].  There are a number of
improvements (e.g., spy now optionally takes a logging level), and the
way underlying implementations are wired in has changed entirely.

As for a set-level, I began work on adding it, but the java logging
libraries aren't really designed to accept programmatic changes to
logging level.  For example, some wrapper libraries (turtles all the
way down), like SLF4J don't even expose the implementation it wraps so
you can't drill down and fiddle with it.  Or worse, in
java.util.logging the Logger object has a setLevel method, but that
won't do anything unless you alter the level of the handlers that
actually do the logging, and those handlers might actually be hanging
off of a Logger higher up in the hierarchy.

Which brings up another problem: most logging libs support a
hierarchical model and multiple logging targets (e.g., console,
rolling file).  When one is in the "com.example" namespace, and calls
(set-level! :debug) should that apply to all namespaces, only that
namespace, all subordinate namespaces?  Should all handlers be
updated, only the ones that write to console? What if someone's using
a tailed a log? Which ones you choose may or may not be supportable
depending on the underlying logging implementation.

In the end, java logging libs were designed to be configured by a file
at start-up, and there's enough complexity involved that c.c.logging
leaves that to you.  On the upside, some libs (e.g., log4j) will allow
you to reload the logging configuration file.

But as always, patches welcome.  ;)


[1] http://clojure.github.com/clojure-contrib/branch-master/logging-api.html


On Sep 14, 10:17 am, Jeff Rose <ros...@gmail.com> wrote:
> Hi,
>   I've been using my own wrapper for Java's built-in logging so far,
> but today I took a look at clojure.contrib.logging because I would
> like to start using spy.  It really seems like Clojure should have
> some simple logging out of the box, but this is not the case yet.  Can
> we make it a bit more user friendly?  For example, why can't it log to
> the terminal with log level INFO by default?  Then we could just
> require c.c.logging and use (log/info ...) or (log/spy ...).  Also,
> there doesn't seem to be a clear way to set the log level. How about a
> (log/set-level :debug) type of function?
>
> I'm happy to write these functions and post them on assembla or share
> a git repository, but I'm not sure how the process works.  Or maybe
> I'm doing something strange.  Is everyone dropping into Java interop
> to setup logging for every script?
>
> -Jeff

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en

Reply via email to