From cb55fecbc67ce5463a6ccfa93ad6ea503f39a43e Mon Sep 17 00:00:00 2001 From: "rick.chan" Date: Tue, 1 Apr 2025 14:34:18 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=20ms=20=E6=98=BE=E7=A4=BA?= =?UTF-8?q?=E6=A0=BC=E5=BC=8F=EF=BC=8CFile=20Rotating=20=E6=A8=A1=E5=BC=8F?= =?UTF-8?q?=E6=94=AF=E6=8C=81=E7=BB=AD=E5=86=99=EF=BC=8C=E5=A6=82=E6=9E=9C?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E5=B7=B2=E5=AD=98=E5=9C=A8=E4=B8=8D=E5=AF=B9?= =?UTF-8?q?=E4=B8=8A=E6=AC=A1=E5=86=85=E5=AE=B9=E8=BF=9B=E8=A1=8C=E8=A6=86?= =?UTF-8?q?=E7=9B=96=EF=BC=8C=E8=80=8C=E6=98=AF=E4=BB=8E=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E7=BB=93=E5=B0=BE=E7=BB=A7=E7=BB=AD=E5=BE=80=E4=B8=8B=E5=86=99?= =?UTF-8?q?=EF=BC=8C=E6=88=96=E7=9B=B4=E6=8E=A5=E5=86=99=E4=B8=8B=E4=B8=80?= =?UTF-8?q?=E4=B8=AA=E6=96=87=E4=BB=B6=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: rick.chan --- .gitignore | 2 ++ README.md | 3 +++ demo/main.go | 8 +++++++- filehandler.go | 17 +++++++++-------- 4 files changed, 21 insertions(+), 9 deletions(-) create mode 100644 README.md diff --git a/.gitignore b/.gitignore index c6f9a44..a1c29da 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,3 @@ .vscode/settings.json +*.log +*.log.* diff --git a/README.md b/README.md new file mode 100644 index 0000000..74427b4 --- /dev/null +++ b/README.md @@ -0,0 +1,3 @@ +# Simple Log + +A very simple log system(golang). diff --git a/demo/main.go b/demo/main.go index e5e5532..b101914 100644 --- a/demo/main.go +++ b/demo/main.go @@ -1,11 +1,17 @@ package main import ( + "time" + "github.com/lion187chen/simplelog" ) var sl *simplelog.SimpleLog func main() { - sl = new(simplelog.SimpleLog).InitRotating("./log/MS.log", 1024*1024*2, 100, simplelog.LevelTrace) + sl = new(simplelog.SimpleLog).InitRotating("./log/MS.log", 1024*10, 10, simplelog.LevelTrace) + for i := 0; i < 10000000; i++ { + sl.Debug("hello world") + time.Sleep(8 * time.Millisecond) + } } diff --git a/filehandler.go b/filehandler.go index 8486887..3ab2d8e 100644 --- a/filehandler.go +++ b/filehandler.go @@ -2,6 +2,7 @@ package simplelog import ( "fmt" + "io" "os" "path" "time" @@ -58,6 +59,10 @@ type RotatingFileHandler struct { } func (h *RotatingFileHandler) InitRotating(name string, maxBytes int, backupCount int) (*RotatingFileHandler, error) { + h.fileName = name + h.maxBytes = maxBytes + h.backupCount = backupCount + if isFileExist(name) { var err error h.fd, err = os.OpenFile(name, os.O_CREATE|os.O_RDONLY, 0666) @@ -69,12 +74,12 @@ func (h *RotatingFileHandler) InitRotating(name string, maxBytes int, backupCoun h.fd.Close() return nil, err } - if f.Size() > 0 { - h._doRollover() - return h, nil + if f.Size() < int64(h.maxBytes) { + h.fd.Seek(0, io.SeekEnd) } else { - h.fd.Close() + h._doRollover() } + return h, nil } dir := path.Dir(name) @@ -84,10 +89,6 @@ func (h *RotatingFileHandler) InitRotating(name string, maxBytes int, backupCoun return nil, fmt.Errorf("invalid max bytes") } - h.fileName = name - h.maxBytes = maxBytes - h.backupCount = backupCount - var err error h.fd, err = os.OpenFile(name, os.O_CREATE|os.O_WRONLY, 0666) if err != nil {