From 1841b88d6cda425b7a4126eb8ff4fcf564c783d0 Mon Sep 17 00:00:00 2001 From: Sergey Matveev Date: Thu, 12 Aug 2021 13:07:16 +0300 Subject: [PATCH] Threadsafe logging to file descriptor --- src/log.go | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/log.go b/src/log.go index 78f9acc..a2e72b2 100644 --- a/src/log.go +++ b/src/log.go @@ -21,6 +21,7 @@ import ( "bytes" "fmt" "os" + "sync" "time" "go.cypherpunks.ru/recfile" @@ -29,7 +30,10 @@ import ( const LogFdPrefix = "FD:" -var LogFd *os.File +var ( + LogFd *os.File + LogFdLock sync.Mutex +) type LE struct { K string @@ -69,7 +73,9 @@ func (les LEs) Rec() string { func (ctx *Ctx) Log(rec string) { if LogFd != nil { + LogFdLock.Lock() LogFd.WriteString(rec) + LogFdLock.Unlock() return } fdLock, err := os.OpenFile( -- 2.44.0