123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128 |
- 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, useutc bool) {
- exdmap := map[string]int{
- "level": 8,
- "unit": 32,
- "msg": 2048,
- }
- this.SetFormatterWithCustomExData(fmtstr, exdmap, useutc)
- }
- func (this *CommonLogger) SetFormatterWithCustomExData(fmtstr string, exlist map[string]int, useutc bool) {
- tpe := timefmt.NewTimePrinterEx()
- parser := timefmt.NewFormatParser(true)
- for k, v := range exlist {
- sz := v
- nm := k
- parser.AddExDataTag(k, func() timefmt.TimeElementEx {
- return tfelem.NewExDataElement(sz, nm)
- })
- }
- tfe := timefmt.NewTimeFormatterEx(tpe, parser, true)
- tfe.ParseFormat(fmtstr)
- if useutc {
- tfe.ForceUTC()
- } else {
- tfe.ForceLocalTimezone()
- }
- this.formatter = tfe
- }
- func (this *CommonLogger) SetDefaultFormatter() {
- this.SetFormatter(loggerDefaultFormatString, false)
- }
- func (this *CommonLogger) RawEmit(lv DWSILogLevel, exdata map[string]string) {
- this.RawEmitWithCustomTime(lv, time.Now(), exdata)
- }
- func (this *CommonLogger) RawEmitWithCustomTime(lv DWSILogLevel, timeparam time.Time, exdata map[string]string) {
- if lv <= this.output_level {
- s := this.formatter.Format(timeparam, exdata)
- _, err := fmt.Fprint(this.log_writter, s)
- if err != nil {
- fmt.Println("Failed Write Log: ", s)
- }
- }
- }
- func (this *CommonLogger) Emit(lv DWSILogLevel, unit string, msg string) {
- if lv > this.output_level {
- return
- }
- 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{}) {
- if lv > this.output_level {
- return
- }
- s := fmt.Sprintf(fmtstr, a...)
- this.Emit(lv, unit, s)
- }
- func (this *CommonLogger) EmitN(lv DWSILogLevel, unit string, a ...interface{}) {
- if lv > this.output_level {
- return
- }
- s := fmt.Sprint(a...)
- this.Emit(lv, unit, s)
- }
|