package hieda_yamlutil import ( "fmt" "git.swzry.com/zry/GoHiedaLogger/hiedalog" "github.com/ttacon/chalk" "io" "strings" ) type SimpleConsoleBackend struct { wr io.Writer s_fc_json_key func(string) string s_fc_json_val func(string) string s_lvd []func(string) string } func NewSimpleConsoleBackend(wr io.Writer) *SimpleConsoleBackend { scb := &SimpleConsoleBackend{ wr: wr, s_fc_json_key: chalk.White.NewStyle().WithTextStyle(chalk.Bold).Style, s_fc_json_val: chalk.White.NewStyle().WithTextStyle(chalk.Italic).WithTextStyle(chalk.Underline).Style, s_lvd: []func(string) string{ chalk.Red.NewStyle().WithTextStyle(chalk.Bold).WithTextStyle(chalk.Underline).Style, chalk.Red.NewStyle().WithTextStyle(chalk.Bold).Style, chalk.Red.NewStyle().Style, chalk.Yellow.NewStyle().Style, chalk.Green.NewStyle().Style, chalk.Cyan.NewStyle().Style, chalk.Blue.NewStyle().Style, }, } return scb } func (b *SimpleConsoleBackend) EmitStringLog(module string, level hiedalog.HiedaLogLevel, content string) { var lv string if level.LevelNumber < 7 { lv = b.s_lvd[level.LevelNumber](level.Name) } else { lv = level.Name } _, _ = fmt.Fprintf(b.wr, "<%s> [%s] %s\n", lv, module, content) } func (b *SimpleConsoleBackend) EmitComplexLog(module string, level hiedalog.HiedaLogLevel, data map[string]string) { b.EmitStringLog(module, level, b.prettyComplexToString(data)) } func (b *SimpleConsoleBackend) prettyComplexToString(data map[string]string) string { sb := strings.Builder{} scn := 0 xr := false if len(data) < 5 { for k, v := range data { scn += len(k) + len(v) + 2 if scn > 160 { xr = true break } sb.WriteString(b.s_fc_json_key(k)) sb.WriteRune(':') sb.WriteString(b.s_fc_json_val(v)) sb.WriteString(", ") } if !xr { so := sb.String() return so[:len(so)-2] } } sb = strings.Builder{} sb.WriteRune('\n') for k, v := range data { sb.WriteString(b.s_fc_json_key(k)) sb.WriteRune(':') sb.WriteString(b.s_fc_json_val(v)) sb.WriteRune('\n') } return sb.String() }