From c481e8a05e5c2ccaeba4c34beba3e0f099941c85 Mon Sep 17 00:00:00 2001 From: wxy05240 <782268618@qq.com> Date: Thu, 14 Aug 2025 17:56:29 +0800 Subject: [PATCH] =?UTF-8?q?fix=EF=BC=9AAsynchronous=20log=20writing=20has?= =?UTF-8?q?=20not=20taken=20effect=20Make=20it=20effective=20by=20modifyin?= =?UTF-8?q?g=20the=20queue?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- core/log/writer.go | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/core/log/writer.go b/core/log/writer.go index 38c62d6bb444..b0c08b745faa 100644 --- a/core/log/writer.go +++ b/core/log/writer.go @@ -1,6 +1,7 @@ package log import ( + "github.com/1Panel-dev/1Panel/core/constant" "log" "os" "path" @@ -9,9 +10,6 @@ import ( "sync" "sync/atomic" "time" - "unsafe" - - "github.com/1Panel-dev/1Panel/core/constant" "github.com/1Panel-dev/1Panel/core/global" ) @@ -23,12 +21,12 @@ type Writer struct { fire chan string cf *Config rollingfilech chan string + queue chan []byte } type AsynchronousWriter struct { Writer ctx chan int - queue chan []byte errChan chan error closed int32 wg sync.WaitGroup @@ -100,6 +98,7 @@ func NewWriterFromConfig(c *Config) (RollingWriter, error) { var rollingWriter RollingWriter writer := Writer{ + queue: make(chan []byte, BufferSize), m: mng, file: file, absPath: filepath, @@ -156,17 +155,15 @@ func NewWriterFromConfig(c *Config) (RollingWriter, error) { wr := &AsynchronousWriter{ ctx: make(chan int), - queue: make(chan []byte, QueueSize), errChan: make(chan error, QueueSize), wg: sync.WaitGroup{}, closed: 0, Writer: writer, } - + rollingWriter = wr wr.wg.Add(1) go wr.writer() wr.wg.Wait() - rollingWriter = wr return rollingWriter, nil } @@ -211,9 +208,10 @@ func (w *Writer) Write(b []byte) (int, error) { } } - fp := atomic.LoadPointer((*unsafe.Pointer)(unsafe.Pointer(&w.file))) - file := (*os.File)(fp) - return file.Write(b) + select { + case w.queue <- b: + return len(b), nil + } } func (w *Writer) Reopen(file string) error {