Selaa lähdekoodia

导入依赖包

tangs 6 vuotta sitten
vanhempi
commit
88048a5ac4

+ 2 - 0
src/github.com/Tangmz/tangs/log/.gitignore

@@ -0,0 +1,2 @@
+.idea/*
+*.iml

+ 37 - 0
src/github.com/Tangmz/tangs/log/README.md

@@ -0,0 +1,37 @@
+# log
+
+创建一个简单的日志对象
+
+用法如下:
+
+```golang
+package main
+
+import (
+	"github.com/tangs/log"
+	"os"
+	"fmt"
+)
+
+func main() {
+	// 直接使用对象打印日志
+	log.Debug("halo")
+
+	// 手动设置打印日志到文件
+	f, err := os.Create("log.log")
+	if err != nil {
+		log.Error("%v", err)
+		return
+	}
+	log.Redirect(f)
+	log.Debug("%v", "halo, log!")
+
+	// 重定向日志到文件
+	err = log.RedirectFile("log/log.log")
+	if err != nil {
+		fmt.Println("log ", err.Error())
+		return
+	}
+	log.Debug("%v", "halo, RedirectFile")
+}
+```

+ 111 - 0
src/github.com/Tangmz/tangs/log/log.go

@@ -0,0 +1,111 @@
+package log
+
+import (
+	"log"
+	"os"
+	"fmt"
+	"io"
+	"path/filepath"
+)
+
+type logLevel int
+
+type Logger struct {
+	Level logLevel
+	Log *log.Logger
+}
+
+const (
+	DEBUG logLevel = iota
+	INFO             = 2
+	WARNING          = 3
+	ERROR            = 4
+)
+
+var logger = NewLogger()
+
+func NewLogger() *Logger {
+	return &Logger{
+		Log: log.New(os.Stdout, "",  log.LstdFlags|log.Lshortfile),
+	}
+}
+
+func (l *Logger) SetLevel(level int) {
+	l.Level = logLevel(level)
+}
+
+func Redirect(writer io.Writer) {
+	logger.Log.SetOutput(writer)
+}
+
+func RedirectFile(file string) error {
+	var err error
+	fp := filepath.Dir(file)
+	err = os.MkdirAll(fp, os.ModePerm)
+	if err != nil {
+		return err
+	}
+	f, err := os.OpenFile(file, os.O_WRONLY|os.O_CREATE|os.O_APPEND|os.O_SYNC, 0755)
+	if err != nil {
+		return err
+	}
+	Redirect(f)
+	return nil
+}
+
+func Debug(format string, args... interface{}) {
+	if DEBUG < logger.Level {
+		return
+	}
+	logger.Log.Output(2,  fmt.Sprintf("[D] " + format, args...))
+}
+
+func Info(format string, args... interface{})  {
+	if INFO < logger.Level {
+		return
+	}
+	logger.Log.Output(2, fmt.Sprintf("[I] " + format, args...))
+}
+
+func Warning(format string, args... interface{})  {
+	if WARNING < logger.Level {
+		return
+	}
+	logger.Log.Output(2, fmt.Sprintf("[W] " + format, args...))
+}
+
+func Error(format string, args... interface{})  {
+	if ERROR < logger.Level {
+		return
+	}
+	logger.Log.Output(2, fmt.Sprintf("[E] " + format, args...))
+}
+
+
+func (l *Logger) Debug(format string, args... interface{}) {
+	if DEBUG < logger.Level {
+		return
+	}
+	logger.Log.Output(2,  fmt.Sprintf("[D] " + format, args...))
+}
+
+func (l *Logger) Info(format string, args... interface{})  {
+	if INFO < logger.Level {
+		return
+	}
+	logger.Log.Output(2, fmt.Sprintf("[I] " + format, args...))
+}
+
+func (l *Logger) Warning(format string, args... interface{})  {
+	if WARNING < logger.Level {
+		return
+	}
+	logger.Log.Output(2, fmt.Sprintf("[W] " + format, args...))
+}
+
+func (l *Logger) Error(format string, args... interface{})  {
+	if ERROR < logger.Level {
+		return
+	}
+	logger.Log.Output(2, fmt.Sprintf("[E] " + format, args...))
+}

+ 10 - 0
src/github.com/Tangmz/tangs/log/log_test.go

@@ -0,0 +1,10 @@
+package log
+
+import (
+	"testing"
+)
+
+func TestLog(t *testing.T) {
+	Debug("%v", "halo")
+
+}