(Sorry guys, I should have read ahead in my mailbox. Please disregard.)
On Thu, Aug 30, 2012 at 11:52 AM, Robby Findler <ro...@eecs.northwestern.edu> wrote: > On Thu, Aug 30, 2012 at 9:32 AM, Greg Hendershott > <greghendersh...@gmail.com> wrote: >> Thanks, Robby. >> >> Do you mean I could do something like this? >> >> (define (enable-log-output level) >> (let ([r (make-log-receiver (current-logger) level)]) >> (thread >> (lambda () >> (let loop () >> (match (sync r) >> [(vector lvl msg v) >> (printf "; [~a] ~a\n" lvl msg)]) >> (loop)))))) >> (enable-log-output 'debug) > > Yes, I think so. > >> If so, then: >> >> 1. I don't see what you mean re being able to do more than string >> munging. `v' is a continuation-mark-set. Is that the struct you mean? > > Yes, but perhaps this isn't helpful, as you'd need to use you own > logging macros to put something other than the continuation marks in > there. Maybe that makes this a non-starter for you. > >> But stipulating I could filter in whatever fashion ... >> >> 2. Putting this in every source file doesn't seem practical? I'm >> talking about doing interactive development, using XREPL's ,log >> command. Open a file, evaluate it, make some changes, maybe use ,log >> to tweak the log output level, evaluate, move on to another file. That >> sort of work-flow. > > IIUC, this is something you'd do instead of using ,log. You can > require some helper library with the function in it, or probably Eli > has some way to add more commands or something like that. Or maybe > even a patch to ,log that'd let you specify a regexp in the case that > string munging was the best option? > >> 3. I have to ask users of my collections to use code like this, to >> avoid getting "drowned" in my log-debug output? That doesn't sound >> good. > > You could designate a specific logger that you log to, instead of > logging to the current-logger. This would also require you to call you > own macros, not log-debug and co. > >> >> ,log already does filtering on one "dimension" ("severity") without >> touching your source, which is great. It seems odd to have to use >> per-file code, in order to filter on another dimension ("facility" or >> "module"). > > I don't think there is any per-module requirement. > > Robby > >> On Thu, Aug 30, 2012 at 8:55 AM, Robby Findler >> <ro...@eecs.northwestern.edu> wrote: >>> On Thu, Aug 30, 2012 at 6:29 AM, Greg Hendershott >>> <greghendersh...@gmail.com> wrote: >>>> I have some code with copious log-debug calls. Occasionally I set >>>> ",log debug" to see the output. >>>> >>>> New in 5.3, I'm seeing many dozens of outputs like the following: >>>> >>>> ; [debug] mzc optimizer: inlining: involving: core727 in: unpack728 in >>>> module: 's3 size: 149 threshold: 320 >>>> >>>> These are interleaved with and badly obscuring my own debug output. >>>> >>>> I've been trying to ignore these and live with it the last couple >>>> weeks, but it's proving difficult. >>>> >>>> 1. Narrow question: Is there a way I can disable the mzc debug output, >>>> while preserving my own? >>> >>> You can set up your own log receiver and filter out the messages that >>> you want (note that you can filter based on racket data structures, >>> not just string munging as log messages have a value associated with >>> them that you can query). >>> >>> Robby ____________________ Racket Users list: http://lists.racket-lang.org/users