Skip to content

Commit 05a2cbf

Browse files
committed
feat: support single and rotate handler
1 parent 9acfd03 commit 05a2cbf

File tree

4 files changed

+62
-4
lines changed

4 files changed

+62
-4
lines changed

log/handler/file.go

+13-2
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@ type FileHandler struct {
2020
filenameFormat string
2121
dateFormat string
2222
timedFilename string
23+
24+
rotate bool
2325
}
2426

2527
func NewFileHandler(filename string, level record.Level) *FileHandler {
@@ -60,12 +62,21 @@ func (h *FileHandler) SetLevel(level record.Level) {
6062
func (h *FileHandler) write(r record.Record) {
6163
h.Lock()
6264
defer h.Unlock()
63-
file, _ := os.OpenFile(h.GetTimedFilename(), os.O_RDWR|os.O_CREATE|os.O_APPEND, 0644)
65+
file, _ := os.OpenFile(h.GetFilename(), os.O_RDWR|os.O_CREATE|os.O_APPEND, 0644)
6466
defer file.Close()
6567
file.Write([]byte(r.Formatted))
6668
}
6769

68-
// GetTimedFilename Gets the Timed filename.
70+
// GetFilename Gets the filename.
71+
func (h *FileHandler) GetFilename() string {
72+
if !h.rotate {
73+
return h.filename
74+
}
75+
76+
return h.GetTimedFilename()
77+
}
78+
79+
// GetTimedFilename Gets the timed filename.
6980
func (h *FileHandler) GetTimedFilename() string {
7081
dirname := path.Dir(h.filename)
7182
filename := path.Base(h.filename)

log/handler/file_test.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ func TestNewFileHandler(t *testing.T) {
1515
filename := path.Join(os.TempDir(), "thinkgo.log")
1616

1717
h := NewFileHandler(filename, record.DEBUG)
18-
filename = h.GetTimedFilename()
18+
filename = h.GetFilename()
1919

2020
os.Remove(filename)
2121

@@ -32,7 +32,7 @@ func TestNewFileHandler(t *testing.T) {
3232
if !strings.Contains(content, message) {
3333
t.Error("test FileHandler error")
3434
}
35-
35+
t.Log(filename, content)
3636
}
3737

3838
func getRecord(message string) record.Record {

log/handler/rotate.go

+13
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package handler
2+
3+
import (
4+
"github.com/forgoer/thinkgo/log/record"
5+
)
6+
7+
func NewRotateHandler(filename string, level record.Level) *FileHandler {
8+
// h.timedFilename = h.GetTimedFilename()
9+
fileHandler := NewFileHandler(filename, level)
10+
fileHandler.rotate = true
11+
12+
return fileHandler
13+
}

log/handler/rotate_test.go

+34
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
package handler
2+
3+
import (
4+
"github.com/forgoer/thinkgo/log/record"
5+
"io/ioutil"
6+
"os"
7+
"path"
8+
"strings"
9+
"testing"
10+
)
11+
12+
func TestRotateHandler(t *testing.T) {
13+
filename := path.Join(os.TempDir(), "thinkgo.log")
14+
15+
h := NewRotateHandler(filename, record.DEBUG)
16+
filename = h.GetFilename()
17+
18+
os.Remove(filename)
19+
20+
message := "Log write to file"
21+
r := getRecord(message)
22+
h.Handle(r)
23+
24+
b, err := ioutil.ReadFile(filename)
25+
if err != nil {
26+
t.Error(err)
27+
}
28+
content := string(b)
29+
30+
if !strings.Contains(content, message) {
31+
t.Error("test FileHandler error")
32+
}
33+
t.Log(filename, content)
34+
}

0 commit comments

Comments
 (0)