summaryrefslogtreecommitdiff
path: root/internal/io/logger
diff options
context:
space:
mode:
Diffstat (limited to 'internal/io/logger')
-rw-r--r--internal/io/logger/logger.go23
-rw-r--r--internal/io/logger/modes.go9
2 files changed, 24 insertions, 8 deletions
diff --git a/internal/io/logger/logger.go b/internal/io/logger/logger.go
index 6890201..6a6b5ec 100644
--- a/internal/io/logger/logger.go
+++ b/internal/io/logger/logger.go
@@ -1,5 +1,7 @@
package logger
+// TODO: Rewrite this logger
+
import (
"bufio"
"context"
@@ -64,12 +66,25 @@ var resumeCh chan struct{}
// Tell the logger about logrotation
var rotateCh chan os.Signal
+// Override the logger with a custom callack (e.g. for the t.Log for unit tests)
+type unitTestCallback func(message string)
+
+var unitTestOkCb unitTestCallback
+var unitTestErrorCb unitTestCallback
+
// Helper type to make logging non-blocking.
type buf struct {
time time.Time
message string
}
+// StartUnitTests enables to log all messages to the unit tests.
+func StartUnitTests(ctx context.Context, okCb, errCb unitTestCallback) {
+ unitTestOkCb = okCb
+ unitTestErrorCb = errCb
+ Start(ctx, Modes{UnitTest: true})
+}
+
// Start logging.
func Start(ctx context.Context, mode Modes) {
Mode = mode
@@ -91,12 +106,12 @@ func Start(ctx context.Context, mode Modes) {
switch strategy {
case DailyStrategy:
_, err := os.Stat(config.Common.LogDir)
- Mode.logToFile = !os.IsNotExist(err)
+ Mode.logToFile = !os.IsNotExist(err) && !Mode.UnitTest
Mode.logToStdout = !Mode.Server || Mode.Debug || Mode.Trace || Mode.Quiet
case StdoutStrategy:
fallthrough
default:
- Mode.logToFile = !Mode.Server
+ Mode.logToFile = !Mode.Server && !Mode.UnitTest
Mode.logToStdout = true
}
@@ -182,8 +197,8 @@ func Fatal(args ...interface{}) string {
return log(clientStr, fatalStr, args)
}
-// FatalExit logs an error and exists the process.
-func FatalExit(args ...interface{}) {
+// FatalPanic logs an error and exists the process.
+func FatalPanic(args ...interface{}) {
what := clientStr
if Mode.Server {
what = serverStr
diff --git a/internal/io/logger/modes.go b/internal/io/logger/modes.go
index 8864179..85f90a5 100644
--- a/internal/io/logger/modes.go
+++ b/internal/io/logger/modes.go
@@ -2,11 +2,12 @@ package logger
// Modes specifies the logging mode.
type Modes struct {
- Server bool
- Trace bool
Debug bool
+ logToFile bool
+ logToStdout bool
Nothing bool
Quiet bool
- logToStdout bool
- logToFile bool
+ Server bool
+ Trace bool
+ UnitTest bool
}