github.com/everdrone/grab@v0.1.7-0.20230416223925-40674b995521/internal/instance/log.go (about)

     1  package instance
     2  
     3  import (
     4  	"fmt"
     5  	"io"
     6  	"strings"
     7  	"time"
     8  
     9  	"github.com/fatih/color"
    10  	"github.com/rs/zerolog"
    11  )
    12  
    13  func DefaultLogger(w io.Writer) zerolog.ConsoleWriter {
    14  	return zerolog.ConsoleWriter{
    15  		Out:             w,
    16  		TimeFormat:      time.RFC3339Nano,
    17  		FormatTimestamp: func(i interface{}) string { return "" },
    18  		FormatLevel: func(i interface{}) string {
    19  			var l string
    20  			c := color.New(color.FgBlack)
    21  			if ll, ok := i.(string); ok {
    22  				switch ll {
    23  				case zerolog.LevelTraceValue:
    24  					c.Add(color.BgMagenta)
    25  					l = c.Sprint(" TRC ")
    26  				case zerolog.LevelDebugValue:
    27  					c.Add(color.BgBlue)
    28  					l = c.Sprint(" DBG ")
    29  				case zerolog.LevelInfoValue:
    30  					c.Add(color.BgGreen)
    31  					l = c.Sprint(" INF ")
    32  				case zerolog.LevelWarnValue:
    33  					c.Add(color.BgYellow)
    34  					l = c.Sprint(" WRN ")
    35  				case zerolog.LevelErrorValue:
    36  					c.Add(color.BgRed)
    37  					l = c.Sprint(" ERR ")
    38  				case zerolog.LevelFatalValue:
    39  					c.Add(color.BgHiRed)
    40  					l = c.Sprint(" FTL ")
    41  				case zerolog.LevelPanicValue:
    42  					c.Add(color.BgHiRed).Add(color.Bold)
    43  					l = c.Sprint(" PNC ")
    44  				default:
    45  					c.Add(color.FgWhite).Add(color.Bold)
    46  					l = c.Sprint(" ??? ")
    47  				}
    48  			} else {
    49  				if i == nil {
    50  					c.Add(color.FgWhite).Add(color.Bold)
    51  					l = c.Sprint(" ??? ")
    52  				} else {
    53  					l = " " + strings.ToUpper(fmt.Sprintf("%s", i))[0:5] + " "
    54  				}
    55  			}
    56  			return l
    57  		},
    58  		FormatFieldName: func(i interface{}) string {
    59  			return color.New(color.FgHiWhite).Sprint(fmt.Sprintf("%s=", i))
    60  		},
    61  		FormatMessage: func(i interface{}) string {
    62  			return fmt.Sprintf("%s", i)
    63  		},
    64  	}
    65  }