Hi,

I am trying to wrap some logging procedures into macros. I have a logger
for my application which I define as:

(define-logger sap)

Then I want to define a macro that possibly receives an extra argument
which is the part of the application that's issuing the logging message.

So, if logging from parser, the message would be something like:
sap:parser: msg...

So, I have:
(define-syntax (lt/log stx)
  (syntax-case stx (quote)
    [(_ (quote component) (quote level) msg v ...)
     (with-syntax ([name (datum->syntax stx
                                       (format "log-sap-~a" (quote
(syntax->datum #'level))))])
       #'(name (format (string-append (symbol->string (quote component))
                                      ": "
                                      msg)
                       v ...)))]
    [(_ (quote level) msg v ...)
     (with-syntax ([name (datum->syntax stx
                                       (format "log-sap-~a" (quote
(syntax->datum #'level))))])
       #'(name (format msg v ...)))]))

The reason I am using (quote component) and (quote level) in the
template is because if I don't, then I get all sorts of issues with
messages being matched to the wrong syntax case template.

On the other hand, with this kind of macro the with-syntax doesn't seem
to be working so well when doing (format "log-sap-~a" (quote
(syntax->datum #'level))) because of the whole mess I created in the
template with the quote.

How can I properly write this macro such that it's properly matching the
arguments?

kind regards,
-- 
Paulo Matos

-- 
You received this message because you are subscribed to the Google Groups 
"Racket Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to racket-users+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to