DWT2 Phobos-compatible logging suggestion
Jeremy Powers
jpowers at wyrdtech.com
Tue Jul 13 14:46:25 PDT 2010
Looks reasonable to me. Some comments:
I see a danger w/ having the whole class version()'ed around - the
methods are defined twice, and need to be kept in sync. Would it be
better to just do the version around the implementations? I.E.
something like:
class DWTLogger {
version(Tango) {
tango.util.log.Log.Logger logger;
}
...
void info(T...)(String file, ulong line, String fmt, T args){
version(Tango) {
...
} else {
...
}
}
Also, should the tags for the different levels match log4j style?
That is, use 'INFO', 'DEBUG', etc....
Aside: I was hoping there would be a D-standard logging solution
similar to log4j, but haven't found one outside of Tango yet - not
sure how important logging is to DWT itself, but this is definitely
something needed for many projects. If such a thing did exist, we
could just delegate to it (or use directly).
One more:
> 4) ExceptionPrintStackTrace has become less flexible, but this shouldn't
> matter and can easily be fixed if needed.
I've been mucking around with the way exceptions are defined, to allow
Java-translated code to work with less changes, so assuming I actually
get that done and it works the ExceptionPrintStackTrace method should
be unneeded - in favor of just doing e.printStackTrace(). Anyway,
when I get that part finished I'll send something to the list.
I'm actually a big fan of code reviews as a form of collaboration - do
you want to use the list as a place for this kind of thing, or does it
make sense to do something more formal w/ issue tracking etc?
Jeremy
On Tue, Jul 13, 2010 at 2:00 PM, torhu <no at spam.invalid> wrote:
> Ok, this is sort my way to get some cooperation going on the DWT project.
> Check it out and make suggestions for improvements, or just say "ok" if you
> approve :)
>
> I've been trying for a couple of hours to find a way to do logging that's
> compatible with both Phobos and Tango.
>
> Here's what I came up with, this is tested and working:
> http://pastebin.ca/1900029
>
> This is what I had to take into consideration:
>
> 1) Phobos formatting uses functions like format(...), while tango uses
> format(char[] fmt, ...). Using the signature func(T...)(String fmt, T args)
> was the simplest way I found to be able to just forward arguments to both
> kinds of formatters.
>
> 2) Format specifiers are different. I just did fmt = replace(fmt, "{}",
> "%s") in the Phobos version, which takes care of most cases. We can revisit
> this later if there's an actual need for more flexible formatting.
>
> 3) The IDwtLogger interface had to go, as template member functions cannot
> be virtual. Cfr. item 1. The interface was not put to use anywhere, so this
> should be of no concern.
>
> 4) ExceptionPrintStackTrace has become less flexible, but this shouldn't
> matter and can easily be fixed if needed.
>
More information about the Digitalmars-d-dwt
mailing list