package cmpSnipper import ( "fmt" "log" "time" "encoding/json" ) func (app *App) LogMod(arg interface{}) string { var add bool = false var str string var prf string switch t := arg.(type) { case nil: prf = "N:" str = "null" case string: prf = "S:" str = t case error: prf = "E:" str = t.Error() case byte: prf = "B:" str = string(t) case []byte: prf = "A:" str = string(t) case interface{}: prf = "J:" obyte, _ := json.MarshalIndent(arg, "", "\t") str = string(obyte) default: prf = "U:" str = fmt.Sprintf("Unknown type %T", t) } if add { str = prf + str } return str } func (app *App) Log(farg any, iargs ...interface{}) { var str = app.LogMod(farg) log.SetPrefix(time.Now().UTC().Format("2006-01-02 15:04:05") + ": ") oargs := make([]interface{}, len(iargs)) for k, arg := range iargs { oargs[k] = app.LogMod(arg) } log.Output(2, fmt.Sprintf(str + "\n", oargs...)) } func (app *App) LogSetup() { log.SetFlags( log.Lshortfile ); }