|
- package grlogs
-
- import (
- "bytes"
- "encoding/json"
- "fmt"
- "github.com/astaxie/beego"
- "github.com/astaxie/beego/logs"
- )
-
- const (
- _ = iota
- LEVEL_NONE = iota
- LEVEL_CRITICAL = iota
- LEVEL_ERROR = iota
- LEVEL_WARNING = iota
- LEVEL_WARN = iota
- LEVEL_INFO = iota
- LEVEL_DEBUG = iota
- LEVEL_ALL = iota
- )
-
- type ConsoleLogConfig struct {
- Level int `json:"level"`
- }
-
- type FileLogConfig struct {
- Filename string `json:"filename"`
- Level int `json:"level"`
- Maxlines int `json:"maxlines"`
- Daily bool `json:"daily"`
- Maxdays int `json:"maxdays"`
- Color bool `json:"color"`
- Rotate bool `json:"rotate"`
- }
-
- type ConnLogConfig struct {
- ReconnectOnMsg bool `json:"reconnect_on_msg"`
- Reconnect bool `json:"reconnect"`
- Net string `json:"net"`
- Addr string `json:"addr"`
- Level int `json:"level"`
- }
-
- var loggers = make(map[string]*Logger)
-
- type Logger struct {
- *logs.BeeLogger
- }
-
- func (l *Logger) Write(p []byte) (n int, err error) {
- l.Debug(bytes.NewBuffer(p).String())
- return
- }
-
- func (l *Logger) SetFormat() {
-
- }
-
- func (l *Logger) Stop() {
- l.BeeLogger.Close()
- }
-
- func GetLogger(name string) *Logger {
-
- if l, ok := loggers[name]; ok {
- return l
- } else {
-
- var level int = LEVEL_WARN
-
- if beego.BConfig.RunMode == "dev" {
- level = LEVEL_ALL
- }
-
- conf1 := FileLogConfig{
- Filename: GetCwd(fmt.Sprintf("runtime/logs/%s.log", name)),
- Level: LEVEL_ALL,
- Maxlines: 0,
- Daily: true,
- Maxdays: 7,
- Color: true,
- Rotate: true,
- }
-
- conf2 := ConsoleLogConfig{
- Level: level,
- }
-
- confString, _ := json.Marshal(&conf1)
- confString2, _ := json.Marshal(&conf2)
- loggers[name] = &Logger{}
- loggers[name].BeeLogger = logs.NewLogger()
- loggers[name].SetLogger(logs.AdapterFile, bytes.NewBuffer(confString).String())
- loggers[name].SetLogger(logs.AdapterConsole, bytes.NewBuffer(confString2).String())
- loggers[name].BeeLogger.SetPrefix("_" + name)
- loggers[name].BeeLogger.EnableFuncCallDepth(true)
- loggers[name].BeeLogger.SetLogFuncCallDepth(2)
- return loggers[name]
- }
- }
|