Times in log messages work again
[delight/dlt-lib.git] / dlt / log.dlt
blob5a43d9f0ce1a9b5d09c65e6822e7396c9200a6e8
1 module dlt.log
3 private import dlt.io
4 private import dlt.time
5 private import std.date
6 private import std.stdarg
8 enum Level: Trace, Info, Warn, Error
10 interface Appender:
11         void log(int level, string src, string msg, TypeInfo[] arguments, va_list args)
13 class StreamAppender implements Appender:
14         in Printer printer
15         in Clock clock
16                 
17         void log(int level, string src, string msg, TypeInfo[] arguments, va_list args):
18                 string lstr = ("Error" if level >= 3 else
19                                "Warn"  if level >= 2 else
20                                "Info"  if level >= 1 else
21                                "Trace")
23                 printer.format("{} {,-5} {} - ", clock, lstr, src)
24                 printer.vformat(arguments, args, msg)
25                 printer.write("\n")
27 class LogManager:
28         Level level = Level.Warn
29         Appender[] appenders
31         void log(int level, string src, string msg, TypeInfo[] arguments, va_list args):
32                 if level >= this.level:
33                         for a in appenders:
34                                 a.log(level, src, msg, arguments, args)