diff --git a/docs/architecture/diagrams/plantuml/class_diagram.plantuml b/docs/architecture/diagrams/plantuml/class_diagram.plantuml index 8353248..645512a 100644 --- a/docs/architecture/diagrams/plantuml/class_diagram.plantuml +++ b/docs/architecture/diagrams/plantuml/class_diagram.plantuml @@ -227,6 +227,28 @@ package pkg { + Critical(message : string, parameters : ...any) + Emergency(message : string, parameters : ...any) } + struct baseAsyncLogger implements baseLoggerInterface { + ~ *baseLogger + ~ messageQueue : chan logrecord.Interface + ~ waitGroup sync.WaitGroup + ~ startListeningMessages() + + WaitToFinishLogging() + + Open(queueSize : int) + + Close() + + Log(level : level.Level, message : string, parameters : ...any) + } + interface AsyncLoggerInterface extends Interface { + + Interface + + WaitToFinishLogging() + + Open(queueSize : int) + + Close() + } + struct AsyncLogger implements AsyncLoggerInterface { + + *Logger + + WaitToFinishLogging() + + Open(queueSize : int) + + Close() + } struct Configuration { ~ fromLevel : level.Level ~ toLevel : level.Level @@ -243,6 +265,7 @@ package pkg { ~ template : string ~ init() + New(name : string, timeFormat : string) : *Logger + + NewAsyncLogger(name : string, timeFormat : string, queueSize : int) : *AsyncLogger + WithFromLevel(fromLevel : level.Level) : Option + WithToLevel(toLevel : level.Level) : Option + WithTemplate(template : string) : Option @@ -268,7 +291,9 @@ package pkg { + Emergency(message : string, parameters : ...any) } + baseAsyncLogger *-- baseLogger Logger *-- baseLoggerInterface + AsyncLogger *-- Logger "<>" ..> Logger : uses "<>" ..> Option : uses "<>" ..> Configuration : uses diff --git a/docs/architecture/diagrams/svg/class_diagram.svg b/docs/architecture/diagrams/svg/class_diagram.svg index 702c69d..c18cbf3 100644 --- a/docs/architecture/diagrams/svg/class_diagram.svg +++ b/docs/architecture/diagrams/svg/class_diagram.svg @@ -1,3 +1,4 @@ +<<<<<<< HEAD - \ No newline at end of file + +======= +pkgcommonformatterhandlerlevellogrecordloggerformatterhandlerlogrecordstructuredloggerformatterhandlerlogrecord«module»ParseKey(key : string, record : logrecord.Interface) : interface{}InterfaceWriter() : io.WriterSetWriter(writer : io.Writer)FromLevel() level.LevelSetFromLevel(fromLevel : level.Level)ToLevel() level.LevelSetToLevel(toLevel : level.Level)HandlerfromLevel : level.LeveltoLevel : level.Levelwriter : io.WriterConsoleSupportsANSIColors : func() : boolWriter() : io.WriterSetWriter(writer : io.Writer)FromLevel() : level.LevelSetFromLevel(fromLevel : level.Level)ToLevel() : level.LevelSetToLevel(toLevel : level.Level)«module»New(fromLevel : level.Level, toLevel : level.Level, writer : io.Writer) : *HandlerconsoleSupportsANSIColors() : bool«int»LevelString() : stringDigitRepresentation() : intNext() : LevelPrevious() : Level«module»mapping : map[Level]stringAll : level.LevelTrace : level.LevelDebug : level.LevelVerbose : level.LevelInfo : level.LevelNotice : level.LevelWarning : level.LevelSevere : level.LevelError : level.LevelAlert : level.LevelCritical : level.LevelEmergency : level.LevelNull : level.LevelInterfaceName() : stringTime() : stringTimestamp() : int64Level() : level.LevelFileName() : stringFileLine() : intLogRecordname : stringtimeFormat : stringtimestamp : time.Timelevel : level.LevelfileName : stringfileLine : intName() : stringTime() : stringTimestamp() : int64Level() : level.LevelFileName() : stringFileLine() : int«module»New(name : string, level : level.Level, timeFormat : string, skipCaller : int) : *LogRecordbaseLoggerInterfaceLog(level : level.Level, message : string, parameters : ...any)Name() : stringSetName(name : string)Handlers() : []handler.InterfaceAddHandler(handlerInterface : handler.Interface)RemoveHandler(handlerInterface : handler.Interface)baseLoggername : stringtimeFormat : stringhandlers : []handler.InterfaceLog(level : level.Level, message : string, parameters : ...any)Name() : stringSetName(name : string)Handlers() : []handler.InterfaceAddHandler(handlerInterface : handler.Interface)RemoveHandler(handlerInterface : handler.Interface)InterfaceName() : stringHandlers() : []handler.InterfaceAddHandler(handlerInterface : handler.Interface)RemoveHandler(handlerInterface : handler.Interface)Trace(message : string, parameters : ...any)Debug(message : string, parameters : ...any)Verbose(message : string, parameters : ...any)Info(message : string, parameters : ...any)Notice(message : string, parameters : ...any)Warning(message : string, parameters : ...any)Severe(message : string, parameters : ...any)Error(message : string, parameters : ...any)Alert(message : string, parameters : ...any)Critical(message : string, parameters : ...any)Emergency(message : string, parameters : ...any)LoggerbaseLogger : baseLoggerInterfaceName() : stringHandlers() : []handler.InterfaceAddHandler(handlerInterface : handler.Interface)RemoveHandler(handlerInterface : handler.Interface)Trace(message : string, parameters : ...any)Debug(message : string, parameters : ...any)Verbose(message : string, parameters : ...any)Info(message : string, parameters : ...any)Notice(message : string, parameters : ...any)Warning(message : string, parameters : ...any)Severe(message : string, parameters : ...any)Error(message : string, parameters : ...any)Alert(message : string, parameters : ...any)Critical(message : string, parameters : ...any)Emergency(message : string, parameters : ...any)baseAsyncLogger*baseLoggermessageQueue : chan logrecord.InterfacewaitGroup sync.WaitGroupstartListeningMessages()WaitToFinishLogging()Open(queueSize : int)Close()Log(level : level.Level, message : string, parameters : ...any)AsyncLoggerInterfaceInterfaceWaitToFinishLogging()Open(queueSize : int)Close()AsyncLogger*LoggerWaitToFinishLogging()Open(queueSize : int)Close()ConfigurationfromLevel : level.LeveltoLevel : level.Leveltemplate : stringfile : stringname : stringtimeFormat : string«func(*Configuration)»Option«module»rootLogger : *LoggerfromLevel : level.LeveltoLevel : level.Leveltemplate : stringinit()New(name : string, timeFormat : string) : *LoggerNewAsyncLogger(name : string, timeFormat : string, queueSize : int) : *AsyncLoggerWithFromLevel(fromLevel : level.Level) : OptionWithToLevel(toLevel : level.Level) : OptionWithTemplate(template : string) : OptionWithFile(file : string) : OptionWithName(name : string) : OptionWithTimeFormat(timeFormat : string) : OptionNewConfiguration(options : ...Option) : *ConfigurationConfigure(configuration : *Configuration)Name() : stringTemplate() : stringFromLevel() : level.LevelToLevel() : level.LevelTrace(message : string, parameters : ...any)Debug(message : string, parameters : ...any)Verbose(message : string, parameters : ...any)Info(message : string, parameters : ...any)Notice(message : string, parameters : ...any)Warning(message : string, parameters : ...any)Severe(message : string, parameters : ...any)Error(message : string, parameters : ...any)Alert(message : string, parameters : ...any)Critical(message : string, parameters : ...any)Emergency(message : string, parameters : ...any)InterfaceTemplate() : stringFormat(record : logrecord.Interface, colored : bool) : stringFormattertemplate : stringIsEqual(anotherFormatter : *Formatter) : boolTemplate() : stringFormat(record : logrecord.Interface, colored : bool) : string«module»logLevelColors : map[level.Level]stringresetColor : stringNew(template : string) : *FormatterInterfaceWriter() : io.WriterFromLevel() level.LevelSetFromLevel(fromLevel level.Level)ToLevel() level.LevelSetToLevel(toLevel level.Level)Formatter() : formatter.InterfaceWrite(record : logrecord.Interface)Handler*handler.Handlerformatter : formatter.InterfaceWriter() : io.WriterFromLevel() : level.LevelSetLevel(level : level.Level)ToLevel() : level.LevelSetToLevel(level : level.Level)Formatter() : formatter.InterfaceWrite(record : logrecord.Interface)«module»osStdout : *FileosStderr : *FileosOpenFile : os.OpenFile(name : string, flag : int, perm : FileMode) : (*File, error)New(fromLevel : level.Level, toLevel : level.Level, newFormatter : formatter.Interface, writer : io.Writer, errorWriter : io.Writer) : *HandlerNewConsoleHandler(fromLevel : level.Level, toLevel : level.Level, newFormatter : formatter.Interface) : *HandlerNewConsoleErrorHandler(fromLevel : level.Level, toLevel : level.Level, newFormatter : formatter.Interface) : *HandlerNewFileHandler(fromLevel : level.Level, toLevel : level.Level, newFormatter : formatter.Interface, file : string) : *HandlerconsoleSupportsANSIColors() : boolInterfaceName() : stringTime() : stringTimestamp() : int64Level() : level.LevelFileName() : stringFileLine() : intMessage() : stringLogRecord*logrecord.LogRecordmessage : stringName() : stringTime() : stringTimestamp() : int64Level() : level.LevelFileName() : stringFileLine() : intMessage() : string«module»New(name : string, level : level.Level, timeFormat : string, message : string, parameters : []any, skipCaller : int) : *LogRecordbaseLoggerInterfaceLog(level : level.Level, parameters : ...any)Name() : stringSetName(name : string)Handlers() : []handler.InterfaceAddHandler(handlerInterface : handler.Interface)RemoveHandler(handlerInterface : handler.Interface)baseLoggername : stringtimeFormat : stringhandlers : []handler.InterfaceLog(level : level.Level, parameters : ...any)Name() : stringSetName(name : string)Handlers() : []handler.InterfaceAddHandler(handlerInterface : handler.Interface)RemoveHandler(handlerInterface : handler.Interface)InterfaceName() : stringHandlers() : []handler.InterfaceAddHandler(handlerInterface : handler.Interface)RemoveHandler(handlerInterface : handler.Interface)Trace(parameters : ...any)Debug(parameters : ...any)Verbose(parameters : ...any)Info(parameters : ...any)Notice(parameters : ...any)Warning(parameters : ...any)Severe(parameters : ...any)Error(parameters : ...any)Alert(parameters : ...any)Critical(parameters : ...any)Emergency(parameters : ...any)LoggerbaseLogger : baseLoggerInterfaceName() : stringHandlers() : []handler.InterfaceAddHandler(handlerInterface : handler.Interface)RemoveHandler(handlerInterface : handler.Interface)Trace(parameters : ...any)Debug(parameters : ...any)Verbose(parameters : ...any)Info(parameters : ...any)Notice(parameters : ...any)Warning(parameters : ...any)Severe(parameters : ...any)Error(parameters : ...any)Alert(parameters : ...any)Critical(parameters : ...any)Emergency(parameters : ...any)ConfigurationfromLevel : level.LeveltoLevel : level.Leveltemplate : map[string]stringformat : stringpretty : boolkeyValueDelimiter : stringpairSeparator : stringfile : stringname : stringtimeFormat : string«func(*Configuration)»Option«module»rootLogger : *LoggerfromLevel : level.LeveltoLevel : level.Leveltemplate : map[string]stringinit()New(name : string, timeFormat : string) : *LoggerWithFromLevel(fromLevel : level.Level) : OptionWithToLevel(toLevel : level.Level) : OptionWithTemplate(template : map[string]string) : OptionWithFile(file : string) : OptionWithFormat(format : string) : OptionWithPretty(pretty : bool) : OptionWithKeyValueDelimiter(keyValueDelimiter : string) : OptionWithPairSeparator(pairSeparator : string) : OptionWithName(name : string) : OptionWithTimeFormat(timeFormat : string) : OptionNewConfiguration(options : ...Option) : *ConfigurationConfigure(configuration : *Configuration)Name() : stringTemplate() : stringFromLevel() : level.LevelToLevel() : level.LevelTrace(message : string, parameters : ...any)Debug(message : string, parameters : ...any)Verbose(message : string, parameters : ...any)Info(message : string, parameters : ...any)Notice(message : string, parameters : ...any)Warning(message : string, parameters : ...any)Severe(message : string, parameters : ...any)Error(message : string, parameters : ...any)Alert(message : string, parameters : ...any)Critical(message : string, parameters : ...any)Emergency(message : string, parameters : ...any)baseFormattertemplate : map[string]stringTemplate() : map[string]stringFormat(record : logrecord.Interface) : map[string]interface{}InterfaceTemplate() : stringFormat(record : logrecord.Interface, colored : bool) : stringJSONFormatterbaseFormatter : baseInterfacepretty : boolTemplate() : stringFormat(record : logrecord.Interface, colored : bool) : stringKeyValueFormatterbaseFormatter : baseInterfacekeyValueDelimiter : stringpairSeparator : stringTemplate() : stringFormat(record : logrecord.Interface, colored : bool) : string«module»logLevelColors : map[level.Level]stringresetColor : stringNewJSON(template : map[string]string, pretty : bool) : *JSONFormatterNewKeyValue(template : map[string]string, keyValueDelimiter : string, pairSeparator : string) : *KeyValueFormatterInterfaceWriter() : io.WriterFromLevel() level.LevelSetFromLevel(fromLevel level.Level)ToLevel() level.LevelSetToLevel(toLevel level.Level)Formatter() : formatter.InterfaceWrite(record : logrecord.Interface)Handler*handler.Handlerformatter : formatter.InterfaceWriter() : io.WriterFromLevel() : level.LevelSetLevel(level : level.Level)ToLevel() : level.LevelSetToLevel(level : level.Level)Formatter() : formatter.InterfaceWrite(record : logrecord.Interface)«module»osStdout : *FileosStderr : *FileosOpenFile : os.OpenFile(name : string, flag : int, perm : FileMode) : (*File, error)New(fromLevel : level.Level, toLevel : level.Level, newFormatter : formatter.Interface, writer : io.Writer) : *HandlerNewConsoleHandler(fromLevel : level.Level, toLevel : level.Level, newFormatter : formatter.Interface) : *HandlerNewConsoleErrorHandler(fromLevel : level.Level, toLevel : level.Level, newFormatter : formatter.Interface) : *HandlerNewFileHandler(fromLevel : level.Level, toLevel : level.Level, newFormatter : formatter.Interface, file : string) : *HandlerInterfaceName() : stringTime() : stringTimestamp() : int64Level() : level.LevelFileName() : stringFileLine() : intParameters() : map[string]interface{}LogRecord*logrecord.LogRecordparameters : map[string]interface{}Name() : stringTime() : stringTimestamp() : int64Level() : level.LevelFileName() : stringFileLine() : intParameters() : map[string]interface{}«module»New(name : string, level : level.Level, timeFormat : string, parameters : map[string]interface{}, skipCaller : int) : *LogRecordusesusesusesusesusesusesusesusesusesusescontainscontainsusesusesusesusesusesusesusesusesusescontainscontainscontainscontains0..*usescontainscontainscontains0..*usescontainscontainsusesuses +>>>>>>> dd42018 (Add async logger to class diagram)