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
|
|
|
|
2025-06-06 11:07:04 +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)
|
|
|
|
}
|
|
|
|
}
|
2023-12-13 23:05:42 +08:00
|
|
|
func makeConsoleAppender(appenderConfig LogAppenderConfig) *LoggerAppender {
|
2025-06-06 11:07:04 +08:00
|
|
|
consoleAppender := &ConsoleAppender{}
|
|
|
|
consoleAppender.formatter = SelectFormatter(appenderConfig.Formatter)
|
|
|
|
var appender LoggerAppender = consoleAppender
|
2023-12-13 23:05:42 +08:00
|
|
|
return &appender
|
2023-11-28 18:29:30 +08:00
|
|
|
}
|
|
|
|
func init() {
|
|
|
|
RegistAppender("console", makeConsoleAppender)
|
|
|
|
}
|