12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- package main
- import (
- "fmt"
- "git.swzry.com/zry/YAGTF/yagtf/tfelem"
- "git.swzry.com/zry/YAGTF/yagtf/timefmt"
- "io"
- "time"
- )
- type DWSILogLevel uint8
- const (
- LogLv_INVALID DWSILogLevel = 0
- LogLv_FATAL DWSILogLevel = 1
- LogLv_PANIC DWSILogLevel = 2
- LogLv_ERROR DWSILogLevel = 3
- LogLv_WARN DWSILogLevel = 4
- LogLv_INFO DWSILogLevel = 5
- LogLv_DEBUG DWSILogLevel = 6
- )
- const loggerDefaultFormatString = "[!<y>-<mon>-<d> <h24>:<min>:<s>.<us> <tz> <tzA>] <lt><level><gt>{<unit>} <msg><br>"
- type CommonLogger struct {
- log_writter io.Writer
- output_level DWSILogLevel
- formatter *timefmt.TimeFormatterEx
- }
- func NewCommonLogger(outlv DWSILogLevel, outwr io.Writer) *CommonLogger {
- cl := &CommonLogger{}
- cl.SetOutputLevel(outlv)
- cl.SetWriter(outwr)
- cl.SetDefaultFormatter()
- return cl
- }
- func (this *CommonLogger) SetOutputLevel(outlv DWSILogLevel) {
- if outlv < 7 {
- this.output_level = outlv
- } else {
- this.output_level = 0
- }
- }
- func (this *CommonLogger) SetWriter(wr io.Writer) {
- this.log_writter = wr
- }
- func (this *CommonLogger) SetFormatter(fmtstr string) {
- tpe := timefmt.NewTimePrinterEx()
- parser := timefmt.NewFormatParser(true)
- parser.AddExDataTag("level", func() timefmt.TimeElementEx {
- return tfelem.NewExDataElement(8, "level")
- })
- parser.AddExDataTag("unit", func() timefmt.TimeElementEx {
- return tfelem.NewExDataElement(32, "unit")
- })
- parser.AddExDataTag("msg", func() timefmt.TimeElementEx {
- return tfelem.NewExDataElement(2048, "msg")
- })
- tfe := timefmt.NewTimeFormatterEx(tpe, parser, true)
- this.formatter = tfe
- }
- func (this *CommonLogger) SetDefaultFormatter() {
- this.SetFormatter(loggerDefaultFormatString)
- }
- func (this *CommonLogger) RawEmit(lv DWSILogLevel, exdata map[string]string) {
- s := this.formatter.Format(time.Now(), exdata)
- _, _ = this.log_writter.Write([]byte(s))
- }
- func (this *CommonLogger) Emit(lv DWSILogLevel, unit string, msg string) {
- if lv == LogLv_INVALID {
- return
- }
- lvstr := transLevelIntoLevelString(lv)
- exd := map[string]string{
- "level": lvstr,
- "unit": unit,
- "msg": msg,
- }
- this.RawEmit(lv, exd)
- }
- func (this *CommonLogger) EmitF(lv DWSILogLevel, unit string, fmtstr string, a ...interface{}) {
- s := fmt.Sprintf(fmtstr, a...)
- this.Emit(lv, unit, s)
- }
- func (this *CommonLogger) EmitN(lv DWSILogLevel, unit string, a ...interface{}) {
- s := fmt.Sprint(a...)
- this.Emit(lv, unit, s)
- }
|