That's a good point. I hadn't thought about how wrapping all functions might be detrimental because of side-effect issue you mentioned.
I guess I was thinking of something I could turn on and off easily. But even then, like you mentioned, just wrapping all the functions probably wouldn't be very helpful. I think I was just looking for an easy solution. I'll have to put more thought into my problem. Thanks for setting me straight! ~jeff On Wed, Oct 21, 2009 at 7:05 AM, Robert Lally <rob.la...@gmail.com> wrote: > I'd be a little concerned about wholesale wrapping of functions, purely from > the perspective that you'll be wrapping mostly side-effect free functions > with functions that do have side-effects. That sounds like something you'd > want to do consciously, where you know it will be safe, and where the > results will be meaningful ( I imagine that logging inside retry blocks > could reduce your logs to meaningless pudding pretty quickly ). > On the other hand, I could just be being paranoid. > > R. > > 2009/10/20 Jeff Sapp <jas...@gmail.com> >> >> Hey, I'm working on a small to medium sized, hopefully commercial >> product in clojure. I'll be providing an API to clients, and I'm also >> going to have to make some performance guarantees about a few of my >> functions. Because of that (as well as a few other reasons), I'm very >> interested interested in being able to log every little detail related >> to client interaction including call times for some critical >> functions. >> >> In the past I would have defined a macro similar to >> clojure.contrib.trace/deftrace, let's say named defn-logging, that >> wrapped it's definition in the appropriate logging functions. Then I >> would have defined all my functions with defn-logging instead of defn. >> This is completely unfounded, but that doesn't strike me as being very >> clean. Am I justified in thinking this? >> >> I had one, probably very bad, idea of creating a separate namespace >> for the logging functions that simply pointed to their non-logging >> counterparts in the original namespace. I'm not sure if that's even >> possible without wrapping defn in a macro. Certainly, I think it'd be >> difficult to do cleanly. >> >> During Rich's "Clojure for Lispers" talks, he mentioned rebinding >> functions, and being able to use it for the purpose of logging. I >> think in my case, I'd need to do this globally some how to avoid using >> a macro like defn-logging. It's escaped me, how would I go about doing >> this? Is redefining global values like this a good idea? >> >> Any suggestions? >> >> Thanks, >> ~jeff >> >> > > > > -- > Blog : http://robertlally.com > > > > --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---