- move LogLevel and predefined levels into levels.go - add level-specific constructors for info/warn/error/fatal/debug - add predefined HTTP method log levels and LogLevelForMethod - unify Logger Print/Println internals and add Printf - improve GoDoc coverage for exported APIs
This commit is contained in:
@@ -83,9 +83,7 @@ func (l *Logger) Debugln(m ...any) {
|
||||
l.Println(DEBUG, m...)
|
||||
}
|
||||
|
||||
// Print write message without trailing "\n"
|
||||
// Good for database
|
||||
func (l *Logger) Print(level LogLevel, m ...any) {
|
||||
func (l *Logger) print(level LogLevel, newline bool, m ...any) {
|
||||
if l.level.n < level.n {
|
||||
return
|
||||
}
|
||||
@@ -94,30 +92,10 @@ func (l *Logger) Print(level LogLevel, m ...any) {
|
||||
}
|
||||
|
||||
tb := getFullTraceback(1)
|
||||
for _, writer := range l.writers {
|
||||
if writer == nil {
|
||||
continue
|
||||
}
|
||||
err := writer.Print(level, l.prefix, tb, l.replaceAll(m...)...)
|
||||
if err != nil {
|
||||
l.reportWriterError(err)
|
||||
}
|
||||
messages := l.replaceAll(m...)
|
||||
if newline {
|
||||
messages = append(messages, any("\n"))
|
||||
}
|
||||
}
|
||||
|
||||
// Println
|
||||
// Docker requires "\n" at end to write to log.
|
||||
// print not work for docker, otherwise it will work and write into stdout
|
||||
func (l *Logger) Println(level LogLevel, m ...any) {
|
||||
if l.level.n < level.n {
|
||||
return
|
||||
}
|
||||
if len(l.writers) == 0 {
|
||||
return
|
||||
}
|
||||
|
||||
tb := getFullTraceback(1)
|
||||
messages := append(append(make([]any, 0, len(m)+1), l.replaceAll(m...)...), "\n")
|
||||
for _, writer := range l.writers {
|
||||
if writer == nil {
|
||||
continue
|
||||
@@ -129,6 +107,17 @@ func (l *Logger) Println(level LogLevel, m ...any) {
|
||||
}
|
||||
}
|
||||
|
||||
// Print logs a message without appending a trailing newline semantic.
|
||||
func (l *Logger) Print(level LogLevel, m ...any) { l.print(level, false, m...) }
|
||||
|
||||
// Println logs a message and appends a trailing newline semantic for writers that need it.
|
||||
func (l *Logger) Println(level LogLevel, m ...any) { l.print(level, true, m...) }
|
||||
|
||||
// Printf formats according to a format specifier and logs the resulting message.
|
||||
func (l *Logger) Printf(level LogLevel, format string, args ...any) {
|
||||
l.print(level, false, fmt.Sprintf(format, args...))
|
||||
}
|
||||
|
||||
// reportWriterError writes internal writer failures directly to stderr to avoid
|
||||
// re-entering the same logger path that just failed.
|
||||
func (l *Logger) reportWriterError(err error) {
|
||||
|
||||
Reference in New Issue
Block a user