1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- //go:build windows
- package hiedabke_win_eventlog
- import (
- "fmt"
- "git.swzry.com/zry/GoHiedaLogger/hiedalog"
- "github.com/kardianos/service"
- "strings"
- )
- type SvcLoggerBackend struct {
- SvcLog *service.WindowsLogger
- enable bool
- }
- var _ = hiedalog.HiedaLogBackend(&SvcLoggerBackend{SvcLog: nil})
- func NewSvcLoggerBackend(logger *service.WindowsLogger) *SvcLoggerBackend {
- scb := &SvcLoggerBackend{
- SvcLog: logger,
- enable: false,
- }
- return scb
- }
- func (b *SvcLoggerBackend) Enable() {
- if b.SvcLog != nil {
- b.enable = true
- }
- }
- func (b *SvcLoggerBackend) Shutdown() {
- b.enable = false
- }
- func (b *SvcLoggerBackend) EmitStringLog(module string, level hiedalog.HiedaLogLevel, content string) {
- if !b.enable {
- return
- }
- msg := fmt.Sprintf("<%s> [%s] %s\n", level.Name, module, content)
- switch {
- case level.LevelNumber < 3:
- {
- _ = b.SvcLog.NError(uint32(level.LevelNumber)+1, msg)
- break
- }
- case level.LevelNumber == 3:
- {
- _ = b.SvcLog.NWarning(uint32(level.LevelNumber)+1, msg)
- break
- }
- case level.LevelNumber >= 4:
- {
- _ = b.SvcLog.NInfo(uint32(level.LevelNumber)+1, msg)
- break
- }
- }
- }
- func (b *SvcLoggerBackend) EmitComplexLog(module string, level hiedalog.HiedaLogLevel, data map[string]string) {
- if !b.enable {
- return
- }
- b.EmitStringLog(module, level, b.prettyComplexToString(data))
- }
- func (b *SvcLoggerBackend) 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(k)
- sb.WriteRune(':')
- sb.WriteString(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(k)
- sb.WriteRune(':')
- sb.WriteString(v)
- sb.WriteRune('\n')
- }
- return sb.String()
- }
|