rc-1
This commit is contained in:
@@ -0,0 +1,62 @@
|
||||
package tools
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"os"
|
||||
"time"
|
||||
)
|
||||
|
||||
type LoggerSeverity string
|
||||
|
||||
const (
|
||||
INFO LoggerSeverity = "INFO" // This is a basic informational alert.
|
||||
WARN LoggerSeverity = "WARN" // This is a warning, meaning the program has recovered from an error.
|
||||
DEBUG LoggerSeverity = "DEBUG" // This is a detailed alert containing information used for debugging.
|
||||
ERROR LoggerSeverity = "ERROR" // An error has occurred, please advise.
|
||||
FATAL LoggerSeverity = "FATAL" // An irrecoverable error has occured and the program must exit immediately.
|
||||
)
|
||||
|
||||
var (
|
||||
LoggerInit = &LoggerInstance{source: "INIT"}
|
||||
LoggerHTTP = &LoggerInstance{source: "HTTP"}
|
||||
LoggerModel = &LoggerInstance{source: "ONNX"}
|
||||
LoggerStorage = &LoggerInstance{source: "DISK"}
|
||||
LoggerDatabase = &LoggerInstance{source: "RMDB"}
|
||||
)
|
||||
|
||||
type LoggerInstance struct {
|
||||
source string
|
||||
}
|
||||
|
||||
func (p *LoggerInstance) entry(severity LoggerSeverity, source, message string) {
|
||||
target := os.Stdout
|
||||
if severity == ERROR || severity == FATAL {
|
||||
target = os.Stderr
|
||||
}
|
||||
fmt.Fprintf(target, "%s [%s] [%s] %s\n", time.Now().Format(time.DateTime), severity, source, message)
|
||||
}
|
||||
|
||||
func (p *LoggerInstance) Log(severity LoggerSeverity, format string, a ...any) {
|
||||
p.entry(severity, p.source, fmt.Sprintf(format, a...))
|
||||
if severity == FATAL {
|
||||
os.Exit(1)
|
||||
}
|
||||
}
|
||||
|
||||
func (p *LoggerInstance) Data(severity LoggerSeverity, message string, data any) {
|
||||
if data == nil {
|
||||
p.entry(severity, p.source, message)
|
||||
} else {
|
||||
entryData := ""
|
||||
if b, err := json.MarshalIndent(data, "", " "); err != nil {
|
||||
entryData = fmt.Sprintf("marshal_error: %q", err)
|
||||
} else {
|
||||
entryData = string(b)
|
||||
}
|
||||
p.entry(severity, p.source, fmt.Sprintf("%s\n%s\n---", message, entryData))
|
||||
}
|
||||
if severity == FATAL {
|
||||
os.Exit(1)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user