]> Cypherpunks.ru repositories - nncp.git/commitdiff
Threadsafe logging to file descriptor
authorSergey Matveev <stargrave@stargrave.org>
Thu, 12 Aug 2021 10:07:16 +0000 (13:07 +0300)
committerSergey Matveev <stargrave@stargrave.org>
Thu, 12 Aug 2021 10:07:16 +0000 (13:07 +0300)
src/log.go

index 78f9acc8e99083740f9fbfdf0ccc234f474b07e5..a2e72b238f61e1a570e194d91edca8c58263c80b 100644 (file)
@@ -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(