diff options
author | Ola Bini <ola@autonomia.digital> | 2020-03-26 17:09:03 +0300 |
---|---|---|
committer | Ola Bini <ola@autonomia.digital> | 2020-03-26 17:09:03 +0300 |
commit | 9c082d3516187cbf2a334f0dbe907717afcaedf1 (patch) | |
tree | bafcf552b073497fcb5777540e870c49db0f4465 | |
parent | dd6f383d3e57dd3fcd589e289a23ec5d3b292d5f (diff) |
Make OpenFile a factory function instead of a method on LogTarget. Use this to initialize the default logging target
-rw-r--r-- | cmd/grumble/grumble.go | 2 | ||||
-rw-r--r-- | pkg/logtarget/logtarget.go | 25 |
2 files changed, 12 insertions, 15 deletions
diff --git a/cmd/grumble/grumble.go b/cmd/grumble/grumble.go index 6d2c93a..04f87c7 100644 --- a/cmd/grumble/grumble.go +++ b/cmd/grumble/grumble.go @@ -37,7 +37,7 @@ func main() { dataDir.Close() // Set up logging - err = logtarget.Default.OpenFile(Args.LogPath) + logtarget.Default, err = logtarget.OpenFile(Args.LogPath) if err != nil { fmt.Fprintf(os.Stderr, "Unable to open log file (%v): %v", Args.LogPath, err) return diff --git a/pkg/logtarget/logtarget.go b/pkg/logtarget/logtarget.go index 6ad43f5..950458a 100644 --- a/pkg/logtarget/logtarget.go +++ b/pkg/logtarget/logtarget.go @@ -19,7 +19,6 @@ import ( type LogTarget interface { io.Writer - OpenFile(string) error Rotate() error } @@ -32,8 +31,17 @@ type fileLogTarget struct { var Default LogTarget -func init() { - Default = &fileLogTarget{} +// OpenFile creates a LogTarget pointing to a log file +// and returns it. +// This method will open the file in append-only mode. +func OpenFile(fileName string) (t LogTarget, err error) { + target := &fileLogTarget{} + target.logfn = fileName + target.file, err = os.OpenFile(fileName, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0650) + if err != nil { + return nil, err + } + return target, nil } // Write writes a log message to all registered io.Writers @@ -58,17 +66,6 @@ func (target *fileLogTarget) Write(in []byte) (int, error) { return len(in), nil } -// OpenFile opens the main log file for writing. -// This method will open the file in append-only mode. -func (target *fileLogTarget) 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 -} - // Rotate rotates the current log file. // This method holds a lock while rotating the log file, // and all log writes will be held back until the rotation |