Ai
1 Star 0 Fork 0

magicianlyx/GoLog

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
logger.go 2.22 KB
一键复制 编辑 原始数据 按行查看 历史
magicianlyx 提交于 2021-11-20 20:59 +08:00 . -
package GoLog
import (
"gitee.com/magicianlyx/GoLog/alarm"
"gitee.com/magicianlyx/GoLog/errors"
"gitee.com/magicianlyx/GoLog/location"
)
type Logger struct {
service string
Writers []ILog
Alarm *alarm.Alarm
fatalFilters []func(msg IMsg) bool
attach map[string]interface{}
}
func NewLogger(writers []ILog, _alarm *alarm.Alarm, filters []func(msg IMsg) bool, service string, attach map[string]interface{}) *Logger {
if writers == nil || len(writers) == 0 {
writers = []ILog{NewConsoleLog()}
}
if _alarm == nil {
_alarm = alarm.NewAlarm(make([]alarm.IAlarm, 0), 0)
}
if filters == nil {
filters = make([]func(msg IMsg) bool, 0)
}
if attach == nil {
attach = make(map[string]interface{})
}
return &Logger{service: service, Writers: writers, Alarm: _alarm, fatalFilters: filters, attach: attach}
}
func (l *Logger) write(msg IMsg) {
writers := l.Writers
for _, writer := range writers {
writer.Write(msg)
}
}
func (l *Logger) sendAlarm(msg IMsg) {
filters := l.fatalFilters
for _, filter := range filters {
if filter(msg) {
return
}
}
if l.Alarm != nil {
l.Alarm.Send(msg.ToAlarm(l.attach))
}
}
func (l *Logger) Stop() {
writers := l.Writers
for _, writer := range writers {
writer.Stop()
}
}
// 通用日志输出接口
func (l *Logger) Log(msg IMsg) {
l.write(msg)
if msg.GetLevel() == LevelFatal {
l.sendAlarm(msg)
}
}
// 日志日志接口
func (l *Logger) InfoLog(invoker []*location.Location, info string, params ...interface{}) {
msg := NewInfoMsg(l.service, invoker, info, params...)
l.write(msg)
}
// 警告日志接口
func (l *Logger) WarnLog(err *errors.Error, invoker []*location.Location, params ...interface{}) error {
msg := NewErrorMsg(l.service, LevelWarning, err, invoker, params)
l.write(msg)
return err
}
// 错误日志接口
func (l *Logger) ErrorLog(err *errors.Error, invoker []*location.Location, params ...interface{}) error {
msg := NewErrorMsg(l.service, LevelError, err, invoker, params)
l.write(msg)
return err
}
// 致命日志接口
func (l *Logger) FatalLog(err *errors.Error, invoker []*location.Location, params ...interface{}) error {
msg := NewErrorMsg(l.service, LevelFatal, err, invoker, params)
l.write(msg)
l.sendAlarm(msg)
return err
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/magicianlyx/GoLog.git
git@gitee.com:magicianlyx/GoLog.git
magicianlyx
GoLog
GoLog
20c45f9b998d

搜索帮助