[plt-dev] logging: strings vs. sexps
Blame for the mzscheme primitives! Yeah!
Robby
On Thu, Feb 19, 2009 at 3:52 PM, Matthew Flatt <mflatt at cs.utah.edu> wrote:
> At Thu, 19 Feb 2009 16:45:09 -0500, Carl Eastlund wrote:
>> On Thu, Feb 19, 2009 at 4:36 PM, Matthew Flatt <mflatt at cs.utah.edu> wrote:
>> >
>> > Maybe it's not that `log-message' needs to change, but that the
>> > `log-error', etc. forms make the wrong thing easy.
>> >
>> > Currently,
>> >
>> > (log-error expr)
>> >
>> > expands to
>> >
>> > (let ([l (current-logger)])
>> > (when (log-level? l 'error)
>> > (log-message l 'error expr (current-continuation-marks))))
>> >
>> >
>> > What if we change it to
>> >
>> > (let ([l (current-logger)])
>> > (when (log-level? l 'error)
>> > (let ([v expr])
>> > (log-message l 'error (format "~s" v) v))))
>> >
>> > ?
>> >
>> > This changes both the formatting and the value supplied to log
>> > receivers by `log-error'. Programmers who want more control over the
>> > message and data can still use `log-message'.
>>
>> Why not make log-error more like error and printf, such that you can write:
>>
>> (log-error "I got a bad value: ~s" v)
>>
>> If we're going to use format under the hood anyway, let's give the
>> user the benefit.
>
> Technically, that adds an error-checking burden to `log-error', in case
> the format string and arguments don't match.
> One day, I hope, we'll
> figure out a consistent way to tell functions like `printf' that it
> should complain about mismatches on behalf of someone else, like
> `log-error'.
>
>