Mercurial > projects > ldc
diff tango/tango/util/log/EventLayout.d @ 132:1700239cab2e trunk
[svn r136] MAJOR UNSTABLE UPDATE!!!
Initial commit after moving to Tango instead of Phobos.
Lots of bugfixes...
This build is not suitable for most things.
author | lindquist |
---|---|
date | Fri, 11 Jan 2008 17:57:40 +0100 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tango/tango/util/log/EventLayout.d Fri Jan 11 17:57:40 2008 +0100 @@ -0,0 +1,154 @@ +/******************************************************************************* + + copyright: Copyright (c) 2004 Kris Bell. All rights reserved + + license: BSD style: $(LICENSE) + + version: Initial release: May 2004 + + author: Kris + +*******************************************************************************/ + +module tango.util.log.EventLayout; + +private import tango.time.Time; + +private import tango.util.log.Event; + +/******************************************************************************* + + Base class for all logging layout instances + +*******************************************************************************/ + +public class EventLayout +{ + /*********************************************************************** + + Subclasses should implement this method to perform the + formatting of each message header + + ***********************************************************************/ + + abstract char[] header (Event event); + + /*********************************************************************** + + Subclasses should implement this method to perform the + formatting of each message footer + + ***********************************************************************/ + + char[] footer (Event event) + { + return ""; + } + + /*********************************************************************** + + Subclasses should implement this method to perform the + formatting of the actual message content. + + ***********************************************************************/ + + char[] content (Event event) + { + return event.toString; + } + + /*********************************************************************** + + Convert a time value (in milliseconds) to ascii + + ***********************************************************************/ + + final char[] toMilli (char[] s, TimeSpan time) + { + assert (s.length > 0); + long ms = time.millis; + + int len = s.length; + do { + s[--len] = ms % 10 + '0'; + ms /= 10; + } while (ms && len); + return s[len..s.length]; + } +} + + +/******************************************************************************* + + A bare layout comprised of tag and message + +*******************************************************************************/ + +public class SpartanLayout : EventLayout +{ + /*********************************************************************** + + Format outgoing message + + ***********************************************************************/ + + char[] header (Event event) + { + event.append(event.getName).append(event.getHierarchy.context.label).append(" - "); + return event.getContent; + } +} + + +/******************************************************************************* + + A simple layout comprised only of level, name, and message + +*******************************************************************************/ + +public class SimpleLayout : EventLayout +{ + /*********************************************************************** + + Format outgoing message + + ***********************************************************************/ + + char[] header (Event event) + { + event.append (event.getLevelName) + .append (event.getName) + .append(event.getHierarchy.context.label) + .append (" - "); + return event.getContent; + } +} + + +/******************************************************************************* + + A simple layout comprised only of time(ms), level, name, and message + +*******************************************************************************/ + +public class SimpleTimerLayout : EventLayout +{ + /*********************************************************************** + + Format outgoing message + + ***********************************************************************/ + + char[] header (Event event) + { + char[20] tmp; + + event.append (toMilli (tmp, event.getSpan)) + .append (" ") + .append (event.getLevelName) + .append (event.getName) + .append(event.getHierarchy.context.label) + .append (" - "); + return event.getContent; + } +}