Enum Level:
------Info
------Warn
------Error
------Fatal
ISink
------writemessage(Level, namespace, message)
FileSink : ISink
------------File
------------FileSink(path)
------------------openfile()
------------writemessage(Level , Namespace , message)
------------------writetofile()
ConsoleSink : ISink
------------Console
------------ConsoleSink(addr)
------------------openconsole()
------------writemessage(Level , Namespace , message)
------------------writetoconsole()
DatabaseSink : ISink
------------DB
------------DatabaseSink(session)
------------------opendatabase()
------------writemessage(Level , Namespace , message)
------------------writetodb()
LoggerConfig
------------Hash<Level,ISink> mapping
------------LogLevel {get;set;}
------------mapLevelToSink(Level ,ISink)
------------------mapping(level,sink)
------------getSink(Level)
------------------mapping[lebel]
Logger
------LoggerConfig config
------Logger(LoggerConfig)
------------config
------Log(level, namespace, msg)
------------if(level > config.loglevel
------------while(level < Level.iterate)
------------------config.get(level).writemessage(level,namespace,msg)
------------level++