Files
puter-fuse/debug/LogService.go

71 lines
1.3 KiB
Go

package debug
import (
"fmt"
"github.com/HeyPuter/puter-fuse-go/services"
)
type ILogger interface {
Log(format string, args ...interface{})
Sub(crumbs []string) *Logger
S(str string) *Logger
}
type Logger struct {
Crumbs []string
}
func NewLogger(format string, args ...interface{}) *Logger {
return &Logger{
Crumbs: []string{fmt.Sprintf(format, args...)},
}
}
func (l *Logger) Log(format string, args ...interface{}) {
str := ""
for _, crumb := range l.Crumbs {
str += fmt.Sprintf("[%s] ", crumb)
}
// Wrap in blue
str = fmt.Sprintf("\033[34;1m%s\033[0m", str)
str += fmt.Sprintf(format, args...)
fmt.Println(str)
}
func (l *Logger) Sub(crumbs []string) *Logger {
return &Logger{
Crumbs: append(l.Crumbs, crumbs...),
}
}
func (l *Logger) S(str string) *Logger {
return &Logger{
Crumbs: append(l.Crumbs, str),
}
}
type LogService struct {
Logger *Logger
services services.IServiceContainer
}
func (svc *LogService) Init(services services.IServiceContainer) {
svc.Logger = &Logger{}
}
func (svc *LogService) Log(msg string) {
svc.Logger.Log(msg)
}
func (svc *LogService) GetLogger(format string, args ...interface{}) *Logger {
logger := &Logger{
Crumbs: append(svc.Logger.Crumbs, fmt.Sprintf(format, args...)),
}
return logger
}