mirror of
https://github.com/mumble-voip/grumble.git
synced 2025-12-22 02:51:57 -08:00
Improved logging.
This commit is contained in:
parent
244027d41b
commit
b13dbeadf1
6 changed files with 82 additions and 6 deletions
53
log.go
Normal file
53
log.go
Normal file
|
|
@ -0,0 +1,53 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"os"
|
||||
"sync"
|
||||
)
|
||||
|
||||
type logTarget struct {
|
||||
mu sync.Mutex
|
||||
logfn string
|
||||
file *os.File
|
||||
memLog *bytes.Buffer
|
||||
}
|
||||
|
||||
var LogTarget logTarget
|
||||
|
||||
func (target *logTarget) Write(in []byte) (int, error) {
|
||||
target.mu.Lock()
|
||||
defer target.mu.Unlock()
|
||||
|
||||
return target.file.Write(in)
|
||||
}
|
||||
|
||||
// Open a log file for writing.
|
||||
// This method will open the file in append-only mode.
|
||||
func (target *logTarget) OpenFile(fn string) (err error) {
|
||||
target.logfn = fn
|
||||
target.file, err = os.OpenFile(target.logfn, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0650)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// Perform a log rotation
|
||||
func (target *logTarget) Rotate() error {
|
||||
target.mu.Lock()
|
||||
defer target.mu.Unlock()
|
||||
|
||||
// Close the existing log file
|
||||
err := target.file.Close()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
target.file, err = os.OpenFile(target.logfn, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0650)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue