mirror of
https://github.com/hanzoai/forge.git
synced 2026-10-30 15:00:39 +00:00
Source files keep their SPDX-License-Identifier and Hanzo copyright line; the Gitea, Gogs and LFS Test Server copyrights they used to repeat now live once in NOTICE, alongside LICENSE. The header lint accepts any copyright line above the SPDX line, so it no longer demands an upstream one. Co-authored-by: Hanzo Dev <[email protected]>
94 lines
2.4 KiB
Go
94 lines
2.4 KiB
Go
// Copyright 2026 Hanzo AI, Inc. All rights reserved.
|
|
// SPDX-License-Identifier: MIT
|
|
|
|
package log
|
|
|
|
import (
|
|
"fmt"
|
|
"os"
|
|
)
|
|
|
|
// FallbackErrorf is the last chance to show an error if the logger has internal errors
|
|
func FallbackErrorf(format string, args ...any) {
|
|
_, _ = fmt.Fprintf(os.Stderr, format+"\n", args...)
|
|
}
|
|
|
|
func GetLevel() Level {
|
|
return GetLogger(DEFAULT).GetLevel()
|
|
}
|
|
|
|
func Log(skip int, level Level, format string, v ...any) {
|
|
// codeql[disable-next-line=go/clear-text-logging]
|
|
GetLogger(DEFAULT).Log(skip+1, &Event{Level: level}, format, v...)
|
|
}
|
|
|
|
func Trace(format string, v ...any) {
|
|
Log(1, TRACE, format, v...)
|
|
}
|
|
|
|
func IsTrace() bool {
|
|
return GetLevel() <= TRACE
|
|
}
|
|
|
|
func Debug(format string, v ...any) {
|
|
Log(1, DEBUG, format, v...)
|
|
}
|
|
|
|
func IsDebug() bool {
|
|
return GetLevel() <= DEBUG
|
|
}
|
|
|
|
func Info(format string, v ...any) {
|
|
Log(1, INFO, format, v...)
|
|
}
|
|
|
|
func Warn(format string, v ...any) {
|
|
Log(1, WARN, format, v...)
|
|
}
|
|
|
|
func Error(format string, v ...any) {
|
|
Log(1, ERROR, format, v...)
|
|
}
|
|
|
|
func ErrorWithSkip(skip int, format string, v ...any) {
|
|
Log(skip+1, ERROR, format, v...)
|
|
}
|
|
|
|
var OsExiter = os.Exit
|
|
|
|
// Fatal records fatal log and exit process
|
|
func Fatal(format string, v ...any) {
|
|
Log(1, FATAL, format, v...)
|
|
GetManager().Close()
|
|
OsExiter(1)
|
|
}
|
|
|
|
func GetLogger(name string) Logger {
|
|
return GetManager().GetLogger(name)
|
|
}
|
|
|
|
func IsLoggerEnabled(name string) bool {
|
|
return GetManager().GetLogger(name).IsEnabled()
|
|
}
|
|
|
|
func SetupStderrLogger(loggerName, writerName string, level Level) {
|
|
writer := NewEventWriterConsole(writerName, WriterMode{
|
|
Level: level,
|
|
Flags: FlagsFromBits(LstdFlags),
|
|
Colorize: CanColorStderr,
|
|
|
|
// For most CLI commands, it's better to use Stderr as log output:
|
|
// this logger is installed early (app.Before), before subcommands like "dump" redirect logging to stderr.
|
|
// If Stdout, early log output (e.g.: warning during config loading) goes to stdout
|
|
// and corrupts any command that writes data to stdout (e.g. "gitd dump --file -").
|
|
//
|
|
// It is inconsistent with the web server's default console logger from config
|
|
// (which will be initialized later and use Stdout by default), but there is no other way at the moment:
|
|
// many existing users depend on such behavior to collect web logs (e.g. fail2ban).
|
|
//
|
|
// Maybe need to refactor the logger system again in the future.
|
|
WriterOption: WriterConsoleOption{Stderr: true},
|
|
})
|
|
GetManager().GetLogger(loggerName).ReplaceAllWriters(writer)
|
|
}
|