summaryrefslogtreecommitdiff
path: root/internal/io
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2021-10-08 11:43:43 +0300
committerPaul Buetow <paul@buetow.org>2021-10-09 12:37:18 +0300
commit2d7ddbeae8286373ac19787dc7dde598a7cb0598 (patch)
tree9749939f8b569951e9639d29450b18c84bb8b6c1 /internal/io
parent7306afe9ab073c424ddca0ddc57950f237948118 (diff)
refactor
Diffstat (limited to 'internal/io')
-rw-r--r--internal/io/dlog/dlog.go53
-rw-r--r--internal/io/dlog/level.go95
-rw-r--r--internal/io/dlog/loggers/factory.go36
3 files changed, 80 insertions, 104 deletions
diff --git a/internal/io/dlog/dlog.go b/internal/io/dlog/dlog.go
index 2ae3b04..f3774ba 100644
--- a/internal/io/dlog/dlog.go
+++ b/internal/io/dlog/dlog.go
@@ -33,7 +33,7 @@ var mutex sync.Mutex
var started bool
// Start logger(s).
-func Start(ctx context.Context, wg *sync.WaitGroup, sourceProcess source.Source, logLevel string) {
+func Start(ctx context.Context, wg *sync.WaitGroup, sourceProcess source.Source) {
mutex.Lock()
defer mutex.Unlock()
@@ -41,27 +41,18 @@ func Start(ctx context.Context, wg *sync.WaitGroup, sourceProcess source.Source,
Common.FatalPanic("Logger already started")
}
- strategy := loggers.GetStrategy(config.Common.LogStrategy)
- level := newLevel(logLevel)
-
switch sourceProcess {
case source.Client:
- // This is a DTail client process running.
- impl := loggers.FOUT
- Client = New(source.Client, source.Client, level, impl, strategy)
- Server = New(source.Client, source.Server, level, impl, strategy)
+ Client = New(source.Client, source.Client)
+ Server = New(source.Client, source.Server)
Common = Client
case source.Server:
- // This is a DTail server process running.
- impl := loggers.FILE
- Client = New(source.Server, source.Client, level, impl, strategy)
- Server = New(source.Server, source.Server, level, impl, strategy)
+ Client = New(source.Server, source.Client)
+ Server = New(source.Server, source.Server)
Common = Server
case source.HealthCheck:
- // Health check isn't logging anything.
- impl := loggers.NONE
- Client = New(source.HealthCheck, source.Client, level, impl, strategy)
- Server = New(source.HealthCheck, source.Server, level, impl, strategy)
+ Client = New(source.HealthCheck, source.Client)
+ Server = New(source.HealthCheck, source.Server)
Common = Client
}
@@ -93,16 +84,20 @@ type DLog struct {
}
// New creates a new DTail logger.
-func New(sourceProcess, sourcePackage source.Source, maxLevel level, impl loggers.Impl, strategy loggers.Strategy) *DLog {
+func New(sourceProcess, sourcePackage source.Source) *DLog {
hostname, err := os.Hostname()
if err != nil {
panic(err)
}
+ strategy := loggers.GetStrategy(config.Common.LogStrategy)
+ loggerName := config.Common.Logger
+ level := newLevel(config.Common.LogLevel)
+
return &DLog{
- logger: loggers.Factory(sourceProcess.String(), impl, strategy),
+ logger: loggers.Factory(sourceProcess.String(), loggerName, strategy),
sourceProcess: sourceProcess,
sourcePackage: sourcePackage,
- maxLevel: maxLevel,
+ maxLevel: level,
hostname: hostname,
}
}
@@ -168,7 +163,7 @@ func (d *DLog) writeArgStrings(sb *strings.Builder, args []interface{}) {
}
func (d *DLog) FatalPanic(args ...interface{}) {
- d.log(FATAL, args)
+ d.log(Fatal, args)
d.Flush()
var sb strings.Builder
@@ -177,37 +172,37 @@ func (d *DLog) FatalPanic(args ...interface{}) {
}
func (d *DLog) Fatal(args ...interface{}) string {
- return d.log(FATAL, args)
+ return d.log(Fatal, args)
}
func (d *DLog) Error(args ...interface{}) string {
- return d.log(ERROR, args)
+ return d.log(Error, args)
}
func (d *DLog) Warn(args ...interface{}) string {
- return d.log(WARN, args)
+ return d.log(Warn, args)
}
func (d *DLog) Info(args ...interface{}) string {
- return d.log(INFO, args)
+ return d.log(Info, args)
}
func (d *DLog) Verbose(args ...interface{}) string {
- return d.log(VERBOSE, args)
+ return d.log(Verbose, args)
}
func (d *DLog) Debug(args ...interface{}) string {
- return d.log(DEBUG, args)
+ return d.log(Debug, args)
}
func (d *DLog) Trace(args ...interface{}) string {
_, file, line, _ := runtime.Caller(1)
args = append(args, fmt.Sprintf("at %s:%d", file, line))
- return d.log(TRACE, args)
+ return d.log(Trace, args)
}
func (d *DLog) Devel(args ...interface{}) string {
- return d.log(DEVEL, args)
+ return d.log(Devel, args)
}
func (d *DLog) Raw(message string) string {
@@ -260,7 +255,7 @@ func (d *DLog) Mapreduce(table string, data map[string]interface{}) string {
args[i] = fmt.Sprintf("%s=%v", k, v)
i++
}
- return d.log(INFO, args)
+ return d.log(Info, args)
}
func (d *DLog) Flush() { d.logger.Flush() }
diff --git a/internal/io/dlog/level.go b/internal/io/dlog/level.go
index 84550f0..248ad83 100644
--- a/internal/io/dlog/level.go
+++ b/internal/io/dlog/level.go
@@ -8,80 +8,69 @@ import (
type level int
const (
- FATAL level = iota
- ERROR level = iota
- WARN level = iota
- INFO level = iota
- DEFAULT level = iota
- VERBOSE level = iota
- DEBUG level = iota
- DEVEL level = iota
- TRACE level = iota
- ALL level = iota
+ Fatal level = iota
+ Error level = iota
+ Warn level = iota
+ Info level = iota
+ Default level = iota
+ Verbose level = iota
+ Debug level = iota
+ Devel level = iota
+ Trace level = iota
+ All level = iota
)
-var allLevels = []level{
- FATAL,
- ERROR,
- WARN,
- INFO,
- DEFAULT,
- VERBOSE,
- DEBUG,
- DEVEL,
- TRACE,
- ALL,
-}
+var allLevels = []level{Fatal, Error, Warn, Info, Default, Verbose, Debug, Devel, Trace, All}
func newLevel(l string) level {
- switch strings.ToUpper(l) {
- case "FATAL":
- return FATAL
- case "ERROR":
- return ERROR
- case "WARN":
- return WARN
- case "INFO":
- return INFO
+ switch strings.ToLower(l) {
+ case "fatal":
+ return Fatal
+ case "error":
+ return Error
+ case "warn":
+ return Warn
+ case "info":
+ return Info
case "":
fallthrough
- case "DEFAULT":
- return DEFAULT
- case "VERBOSE":
- return VERBOSE
- case "DEBUG":
- return DEBUG
- case "DEVEL":
- return DEVEL
- case "TRACE":
- return TRACE
- case "ALL":
- return ALL
+ case "default":
+ return Default
+ case "verbose":
+ return Verbose
+ case "debug":
+ return Debug
+ case "devel":
+ return Devel
+ case "trace":
+ return Trace
+ case "all":
+ return All
}
panic(fmt.Sprintf("Unknown log level %s, must be one of: %v", l, allLevels))
}
func (l level) String() string {
switch l {
- case FATAL:
+ case Fatal:
return "FATAL"
- case ERROR:
+ case Error:
return "ERROR"
- case WARN:
+ case Warn:
return "WARN"
- case INFO:
+ case Info:
return "INFO"
- case DEFAULT:
+ case Default:
return "DEFAULT"
- case VERBOSE:
+ case Verbose:
return "VERBOSE"
- case DEBUG:
+ case Debug:
return "DEBUG"
- case DEVEL:
+ case Devel:
return "DEVEL"
- case TRACE:
+ case Trace:
return "TRACE"
- case ALL:
+ case All:
return "ALL"
}
diff --git a/internal/io/dlog/loggers/factory.go b/internal/io/dlog/loggers/factory.go
index 8697dc4..dda3ee6 100644
--- a/internal/io/dlog/loggers/factory.go
+++ b/internal/io/dlog/loggers/factory.go
@@ -2,45 +2,38 @@ package loggers
import (
"fmt"
+ "strings"
"sync"
)
-type Impl int
-
-const (
- NONE Impl = iota
- STDOUT Impl = iota
- FILE Impl = iota
- FOUT Impl = iota
-)
-
var factoryMap map[string]Logger
var factoryMutex sync.Mutex
-func Factory(name string, impl Impl, strategy Strategy) Logger {
+func Factory(sourceName, loggerName string, rotationStrategy Strategy) Logger {
factoryMutex.Lock()
defer factoryMutex.Unlock()
- id := fmt.Sprintf("name:%s,fileBase:%s,impl:%v", name, strategy.FileBase, impl)
-
+ id := fmt.Sprintf("sourceName:%s,fileBase:%s,loggerName:%s", sourceName, rotationStrategy.FileBase, loggerName)
if factoryMap == nil {
factoryMap = make(map[string]Logger)
}
singleton, ok := factoryMap[id]
if !ok {
- switch impl {
- case NONE:
+ switch strings.ToLower(loggerName) {
+ case "none":
singleton = none{}
- case STDOUT:
+ case "stdout":
singleton = newStdout()
factoryMap[id] = singleton
- case FILE:
- singleton = newFile(strategy)
+ case "file":
+ singleton = newFile(rotationStrategy)
factoryMap[id] = singleton
- case FOUT:
- singleton = newFout(strategy)
+ case "fout":
+ singleton = newFout(rotationStrategy)
factoryMap[id] = singleton
+ default:
+ panic(fmt.Sprintf("Unsupported logger type '%s'", loggerName))
}
}
@@ -53,8 +46,7 @@ func FactoryRotate() {
if factoryMap == nil {
return
}
-
- for _, impl := range factoryMap {
- impl.Rotate()
+ for _, logger := range factoryMap {
+ logger.Rotate()
}
}