(new): add log level helpers and HTTP method levels
Golang lint / lint (push) Successful in 42s

- 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:
2026-04-27 16:36:30 +03:00
parent 3eac1851ec
commit 812caed471
8 changed files with 356 additions and 192 deletions
+15 -26
View File
@@ -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) {