218 lines
5.5 KiB
Go
218 lines
5.5 KiB
Go
package logger
|
|
|
|
import (
|
|
"fmt"
|
|
"io/ioutil"
|
|
"os"
|
|
"path"
|
|
"strings"
|
|
"syscall"
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func TestCheckLevel(t *testing.T) {
|
|
assert.NoError(t, CheckLevel("warn"))
|
|
assert.Error(t, CheckLevel("invalid"))
|
|
}
|
|
|
|
func TestSetAndGetLevel(t *testing.T) {
|
|
l, err := NewTerminalLogger()
|
|
assert.NoError(t, err)
|
|
|
|
l.SetLevel("error")
|
|
assert.Equal(t, "error", l.GetLevel())
|
|
}
|
|
|
|
func TestNewFileLogger(t *testing.T) {
|
|
logFile := "/tmp/logger-test/test.log"
|
|
dir := path.Dir(logFile)
|
|
err := os.MkdirAll(dir, 0775)
|
|
assert.NoError(t, err)
|
|
defer os.RemoveAll(dir)
|
|
|
|
l, err := NewFileLogger(logFile, "debug")
|
|
assert.NoError(t, err)
|
|
|
|
l.Debug("file - debug")
|
|
l.Info("file - info")
|
|
l.Warn("file - warn")
|
|
l.Error("file - error")
|
|
|
|
log, err := ioutil.ReadFile(logFile)
|
|
assert.NoError(t, err)
|
|
assert.Equal(t, 5, len(strings.Split(string(log), "\n")))
|
|
|
|
// Move log file.
|
|
movedLogFile := fmt.Sprintf(`%s.move`, logFile)
|
|
os.Rename(logFile, movedLogFile)
|
|
|
|
l.Error("file - error")
|
|
|
|
log, err = ioutil.ReadFile(movedLogFile)
|
|
assert.NoError(t, err)
|
|
assert.Equal(t, 6, len(strings.Split(string(log), "\n")))
|
|
|
|
// Reopen.
|
|
syscall.Kill(syscall.Getpid(), syscall.SIGHUP)
|
|
time.Sleep(10 * time.Millisecond)
|
|
|
|
l.Warn("file - warn")
|
|
l.Error("file - error")
|
|
|
|
log, err = ioutil.ReadFile(logFile)
|
|
assert.NoError(t, err)
|
|
assert.Equal(t, 3, len(strings.Split(string(log), "\n")))
|
|
}
|
|
|
|
func TestNewFileLoggerWithWf(t *testing.T) {
|
|
logFile := "/tmp/logger-test/test.log"
|
|
errLogFile := "/tmp/logger-test/test.log.wf"
|
|
dir := path.Dir(logFile)
|
|
err := os.MkdirAll(dir, 0775)
|
|
assert.NoError(t, err)
|
|
defer os.RemoveAll(dir)
|
|
|
|
l, err := NewFileLoggerWithErr(logFile, errLogFile, "debug")
|
|
assert.NoError(t, err)
|
|
|
|
l.Debug("file - debug")
|
|
l.Info("file - info")
|
|
l.Warn("file - warn")
|
|
l.Error("file - error")
|
|
|
|
log, err := ioutil.ReadFile(logFile)
|
|
assert.NoError(t, err)
|
|
assert.Equal(t, 5, len(strings.Split(string(log), "\n")))
|
|
|
|
errLog, err := ioutil.ReadFile(errLogFile)
|
|
assert.NoError(t, err)
|
|
assert.Equal(t, 3, len(strings.Split(string(errLog), "\n")))
|
|
|
|
// Move log file.
|
|
movedLogFile := fmt.Sprintf(`%s.move`, logFile)
|
|
os.Rename(logFile, movedLogFile)
|
|
|
|
movedErrLogFile := fmt.Sprintf(`%s.move`, errLogFile)
|
|
os.Rename(errLogFile, movedErrLogFile)
|
|
|
|
l.Error("file - error")
|
|
|
|
log, err = ioutil.ReadFile(movedLogFile)
|
|
assert.NoError(t, err)
|
|
assert.Equal(t, 6, len(strings.Split(string(log), "\n")))
|
|
|
|
errLog, err = ioutil.ReadFile(movedErrLogFile)
|
|
assert.NoError(t, err)
|
|
assert.Equal(t, 4, len(strings.Split(string(errLog), "\n")))
|
|
|
|
// Reopen.
|
|
syscall.Kill(syscall.Getpid(), syscall.SIGHUP)
|
|
time.Sleep(10 * time.Millisecond)
|
|
|
|
l.Warn("file - warn")
|
|
l.Error("file - error")
|
|
|
|
log, err = ioutil.ReadFile(logFile)
|
|
assert.NoError(t, err)
|
|
assert.Equal(t, 3, len(strings.Split(string(log), "\n")))
|
|
|
|
errLog, err = ioutil.ReadFile(errLogFile)
|
|
assert.NoError(t, err)
|
|
assert.Equal(t, 3, len(strings.Split(string(errLog), "\n")))
|
|
}
|
|
|
|
func TestBufferedFileLogger(t *testing.T) {
|
|
logFile := "/tmp/logger-test/test.log"
|
|
dir := path.Dir(logFile)
|
|
err := os.MkdirAll(dir, 0775)
|
|
assert.NoError(t, err)
|
|
defer os.RemoveAll(dir)
|
|
|
|
l, err := NewBufferedFileLogger(logFile, "debug")
|
|
assert.NoError(t, err)
|
|
|
|
l.Debug("file - debug")
|
|
l.Info("file - info")
|
|
l.Warn("file - warn")
|
|
l.Error("file - error")
|
|
|
|
log, err := ioutil.ReadFile(logFile)
|
|
assert.NoError(t, err)
|
|
assert.Equal(t, 1, len(strings.Split(string(log), "\n")))
|
|
|
|
// Wait timeout.
|
|
//time.Sleep(10*time.Second + 10*time.Millisecond)
|
|
//
|
|
//log, err = ioutil.ReadFile(logFile)
|
|
//assert.NoError(t, err)
|
|
//assert.Equal(t, 5, len(strings.Split(string(log), "\n")))
|
|
}
|
|
|
|
func TestBufferedFileLoggerWithErr(t *testing.T) {
|
|
logFile := "/tmp/logger-test/test.log"
|
|
errLogFile := "/tmp/logger-test/test.log.wf"
|
|
dir := path.Dir(logFile)
|
|
err := os.MkdirAll(dir, 0775)
|
|
assert.NoError(t, err)
|
|
defer os.RemoveAll(dir)
|
|
|
|
errL, err := NewBufferedFileLoggerWithErr(logFile, errLogFile, "debug")
|
|
assert.NoError(t, err)
|
|
|
|
errL.Debug("file - debug")
|
|
errL.Info("file - info")
|
|
errL.Warn("file - warn")
|
|
errL.Error("file - error")
|
|
|
|
log, err := ioutil.ReadFile(logFile)
|
|
assert.NoError(t, err)
|
|
assert.Equal(t, 1, len(strings.Split(string(log), "\n")))
|
|
|
|
errLog, err := ioutil.ReadFile(errLogFile)
|
|
assert.NoError(t, err)
|
|
assert.Equal(t, 1, len(strings.Split(string(errLog), "\n")))
|
|
|
|
// Wait timeout.
|
|
//time.Sleep(10*time.Second + 10*time.Millisecond)
|
|
//
|
|
//log, err = ioutil.ReadFile(logFile)
|
|
//assert.NoError(t, err)
|
|
//assert.Equal(t, 5, len(strings.Split(string(log), "\n")))
|
|
//
|
|
//errLog, err = ioutil.ReadFile(errLogFile)
|
|
//assert.NoError(t, err)
|
|
//assert.Equal(t, 3, len(strings.Split(string(errLog), "\n")))
|
|
}
|
|
|
|
func TestTerminalLogger(t *testing.T) {
|
|
l, err := NewTerminalLogger("debug")
|
|
assert.NoError(t, err)
|
|
|
|
l.Debug("terminal - debug")
|
|
l.Info("terminal - info")
|
|
l.Warn("terminal - warn")
|
|
l.Error("terminal - error")
|
|
|
|
l.Debugf("terminal - debug - %d", time.Now().Unix())
|
|
l.Infof("terminal - info - %d", time.Now().Unix())
|
|
l.Warnf("terminal - warn - %d", time.Now().Unix())
|
|
l.Errorf("terminal - error - %d", time.Now().Unix())
|
|
}
|
|
|
|
func TestTerminalLoggerWithErr(t *testing.T) {
|
|
errL, err := NewTerminalLoggerWithErr("debug")
|
|
assert.NoError(t, err)
|
|
|
|
errL.Debug("terminal - debug - err")
|
|
errL.Info("terminal - info - err")
|
|
errL.Warn("terminal - warn - err")
|
|
errL.Error("terminal - error - err")
|
|
|
|
errL.Debugf("terminal - debug - err - %d", time.Now().Unix())
|
|
errL.Infof("terminal - info - err - %d", time.Now().Unix())
|
|
errL.Warnf("terminal - warn - err - %d", time.Now().Unix())
|
|
errL.Errorf("terminal - error - err - %d", time.Now().Unix())
|
|
}
|