gologger/console.go

61 lines
1.4 KiB
Go
Raw Permalink Normal View History

2023-01-23 11:35:44 +08:00
package gologger
2023-01-23 12:08:55 +08:00
import (
"fmt"
)
2023-01-23 11:35:44 +08:00
2025-06-06 19:38:01 +08:00
// ConsoleAppender implements the LoggerAppender interface for console output.
// It uses color-coded templates for different log levels.
// Example:
// appender := &ConsoleAppender{
// formatter: NewSimpleFormatter(),
// }
// appender.Append(event)
// appender.Close()
type ConsoleAppender struct {
formatter LogFormatter
}
2023-01-23 11:35:44 +08:00
const (
2023-11-29 10:16:56 +08:00
ErrorTemplate = "\033[1;31m%s\033[0m"
WarnTemplate = "\033[1;33m%s\033[0m"
InfoTemplate = "\033[1;32m%s\033[0m"
DebugTemplate = "\033[1;34m%s\033[0m"
TraceTemplate = "\033[1;35m%s\033[0m"
2023-01-23 11:35:44 +08:00
)
2024-09-21 14:25:45 +08:00
// Close implements LoggerAppender.
func (c *ConsoleAppender) Close() {
}
2023-01-23 11:35:44 +08:00
func (c *ConsoleAppender) GetName() string {
return "console"
}
func (c *ConsoleAppender) Append(logEvent LogEvent) {
2023-11-28 18:29:30 +08:00
logMsg := c.formatter(logEvent)
2023-01-23 11:35:44 +08:00
switch logEvent.Level {
case Error:
fmt.Printf(ErrorTemplate, logMsg)
case Warn:
fmt.Printf(WarnTemplate, logMsg)
case Info:
fmt.Printf(InfoTemplate, logMsg)
case Debug:
fmt.Printf(DebugTemplate, logMsg)
case Trace:
fmt.Printf(TraceTemplate, logMsg)
}
}
func makeConsoleAppender(appenderConfig LogAppenderConfig) *LoggerAppender {
consoleAppender := &ConsoleAppender{}
consoleAppender.formatter = SelectFormatter(appenderConfig.Formatter)
var appender LoggerAppender = consoleAppender
return &appender
2023-11-28 18:29:30 +08:00
}
func init() {
RegistAppender("console", makeConsoleAppender)
}