Browse Source

v1.3.2 增加 glogs.Debug 等直接方法

tags/v1.3.2
liangzy 4 years ago
parent
commit
8998a4938d
5 changed files with 148 additions and 5 deletions
  1. +13
    -3
      README.md
  2. +56
    -1
      funtion.go
  3. +59
    -0
      grlogs.go
  4. +10
    -1
      log.go
  5. +10
    -0
      log_test.go

+ 13
- 3
README.md View File

@@ -35,7 +35,12 @@ import _ "golib.gaore.com/GaoreGo/grlogs/logs/es"
5. 文件日志会写入到 `./runtime/logs/` 文件夹 **请务必在项目构建阶段创建该目录**


6. 完整示例
6. `AliLS` 日志接入的是阿里SLS GOSDK , 下面是关于 [https://github.com/aliyun/aliyun-log-go-sdk/tree/master/producer] 描述

producer提供了两种关闭模式,分为有限关闭和安全关闭,安全关闭会等待producer中缓存的所有的数据全部发送完成以后在关闭producer,有限关闭会接收用户传递的一个参数值,时间单位为秒,当开始关闭producer的时候开始计时,超过传递的设定值还未能完全关闭producer的话会强制退出producer,此时可能会有部分数据未被成功发送而丢失。
所以用了aliLS 的 adapter 时,最好调用`grlogs.Close()` 或 `grlogs.CloseAll()` 方法安全关闭通道,以刷新缓冲区

7. 完整示例
```go
package grlogs

@@ -71,7 +76,12 @@ func TestGetLogger(t *testing.T) {
Get("wifi").Critical("neoweiwoewe")
}

func TestGetEs(t *testing.T) {
fmt.Println("hello world")
func TestDropAdapter(t *testing.T) {
SetAdapter(LevelAll, AdapterAliLs)
DropAdapter(AdapterAliLs)
Informational(errors.New("he hello"))
SetAdapter(LevelAll, AdapterAliLs)
Debug(errors.New("he hello"))
CloseAll()
}
```

+ 56
- 1
funtion.go View File

@@ -5,9 +5,21 @@ import (
"github.com/astaxie/beego/logs"
"os"
"path"
"strings"
)

var adatperMapper = map[Adapter]func(l *Logger, level Level) error{
var adatperSetMapper = map[Adapter]func(l *Logger, level Level) error{

AdapterSocket: func(l *Logger, level Level) error {
c := ConnLogConfig{
ReconnectOnMsg: false,
Reconnect: true,
Net: "",
Addr: "127.0.0.1:9888",
Level: level,
}
return l.SetLogger(logs.AdapterConn, c.String())
},

AdapterFile: func(l *Logger, level Level) error {
if wd, err := os.Getwd(); err == nil {
@@ -76,3 +88,46 @@ var adatperMapper = map[Adapter]func(l *Logger, level Level) error{
return l.SetLogger(logs.AdapterAliLS, c.String())
},
}

var adatperDropMapper = map[Adapter]func(l *Logger) error{

AdapterAliLs: func(l *Logger) error {
return l.BeeLogger.DelLogger(logs.AdapterAliLS)
},

AdapterFile: func(l *Logger) error {
return l.BeeLogger.DelLogger(logs.AdapterFile)
},

AdapterConsole: func(l *Logger) error {
return l.BeeLogger.DelLogger(logs.AdapterConsole)
},

AdapterElasticSearch: func(l *Logger) error {
return l.BeeLogger.DelLogger(logs.AdapterEs)
},
}

func formatLog(f interface{}, v ...interface{}) string {
var msg string
switch f.(type) {
case string:
msg = f.(string)
if len(v) == 0 {
return msg
}
if strings.Contains(msg, "%") && !strings.Contains(msg, "%%") {
//format string
} else {
//do not contain format char
msg += strings.Repeat(" %v", len(v))
}
default:
msg = fmt.Sprint(f)
if len(v) == 0 {
return msg
}
msg += strings.Repeat(" %v", len(v))
}
return fmt.Sprintf(msg, v...)
}

+ 59
- 0
grlogs.go View File

@@ -0,0 +1,59 @@
package grlogs

import "strings"

func Info(v ...interface{}) {
Get("grlogs").Info(generateFmtStr(len(v)), v...)
}

func Informational(v ...interface{}) {
Get("grlogs").Informational(generateFmtStr(len(v)), v...)
}

func Warning(v ...interface{}) {
Get("grlogs").Warning(generateFmtStr(len(v)), v...)
}

func Warn(v ...interface{}) {
Get("grlogs").Warn(generateFmtStr(len(v)), v...)
}

func Notice(v ...interface{}) {
Get("grlogs").Notice(generateFmtStr(len(v)), v...)
}

func Error(v ...interface{}) {
Get("grlogs").Error(generateFmtStr(len(v)), v...)
}

func Critical(v ...interface{}) {
Get("grlogs").Critical(generateFmtStr(len(v)), v...)
}

func Alert(v ...interface{}) {
Get("grlogs").Alert(generateFmtStr(len(v)), v...)
}

func Emergency(v ...interface{}) {
Get("grlogs").Emergency(generateFmtStr(len(v)), v...)
}

func Trace(v ...interface{}) {
Get("grlogs").Trace(generateFmtStr(len(v)), v...)
}

func Debug(v ...interface{}) {
Get("grlogs").Debug(generateFmtStr(len(v)), v...)
}

func generateFmtStr(n int) string {
return strings.Repeat("%v ", n)
}

func SetAdapter(level Level, adapter Adapter) {
Get("grlogs").SetAdapter(level, adapter)
}

func DropAdapter(adapter Adapter) {
Get("grlogs").DropAdapter(adapter)
}

+ 10
- 1
log.go View File

@@ -17,7 +17,7 @@ type Logger struct {
}

func (self *Logger) SetAdapter(level Level, adapter Adapter) *Logger {
if call, ok := adatperMapper[adapter]; ok {
if call, ok := adatperSetMapper[adapter]; ok {
if err := call(self, level); err != nil {
fmt.Println(err)
}
@@ -25,6 +25,15 @@ func (self *Logger) SetAdapter(level Level, adapter Adapter) *Logger {
return self
}

func (self *Logger) DropAdapter(adapter Adapter) *Logger {
if call, ok := adatperDropMapper[adapter]; ok {
if err := call(self); err != nil {
fmt.Println(err)
}
}
return self
}

func New(label string, channelLens ...int64) (l *Logger, loaded bool) {
var channellens int64
var tmp interface{}


+ 10
- 0
log_test.go View File

@@ -1,6 +1,7 @@
package grlogs

import (
"errors"
_ "golib.gaore.com/GaoreGo/grlogs/logs/alils"
_ "golib.gaore.com/GaoreGo/grlogs/logs/es"
"testing"
@@ -49,3 +50,12 @@ func TestGetAliLs(t *testing.T) {

Close(lable, lable, lable)
}

func TestDropAdapter(t *testing.T) {
SetAdapter(LevelAll, AdapterAliLs)
DropAdapter(AdapterAliLs)
Informational(errors.New("he hello"))
SetAdapter(LevelAll, AdapterAliLs)
Debug(errors.New("he hello"))
CloseAll()
}

Loading…
Cancel
Save