1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- 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()
- }
|