summaryrefslogtreecommitdiff
path: root/internal/io/dlog
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2021-10-09 16:44:28 +0300
committerPaul Buetow <paul@buetow.org>2021-10-10 13:36:32 +0300
commit7a7169791a64190e1002e38bc9c04ad0d5c1ce1f (patch)
tree2c1aa056285b3e5d4febefd114a4b95f62071386 /internal/io/dlog
parent2d7ddbeae8286373ac19787dc7dde598a7cb0598 (diff)
add dtail health check unit test.
Diffstat (limited to 'internal/io/dlog')
-rw-r--r--internal/io/dlog/dlog.go43
-rw-r--r--internal/io/dlog/loggers/file.go10
2 files changed, 24 insertions, 29 deletions
diff --git a/internal/io/dlog/dlog.go b/internal/io/dlog/dlog.go
index f3774ba..28e6882 100644
--- a/internal/io/dlog/dlog.go
+++ b/internal/io/dlog/dlog.go
@@ -41,32 +41,25 @@ func Start(ctx context.Context, wg *sync.WaitGroup, sourceProcess source.Source)
Common.FatalPanic("Logger already started")
}
- switch sourceProcess {
- case source.Client:
- Client = New(source.Client, source.Client)
- Server = New(source.Client, source.Server)
- Common = Client
- case source.Server:
- Client = New(source.Server, source.Client)
- Server = New(source.Server, source.Server)
+ Client = new(sourceProcess, source.Client)
+ Server = new(sourceProcess, source.Server)
+ Common = Client
+ if sourceProcess == source.Server {
Common = Server
- case source.HealthCheck:
- Client = New(source.HealthCheck, source.Client)
- Server = New(source.HealthCheck, source.Server)
- Common = Client
}
var wg2 sync.WaitGroup
wg2.Add(2)
- Client.start(ctx, &wg2)
- Server.start(ctx, &wg2)
- started = true
+ go Client.start(ctx, &wg2)
+ go Server.start(ctx, &wg2)
go rotation(ctx)
go func() {
wg2.Wait()
wg.Done()
}()
+
+ started = true
}
// DLog is the DTail logger.
@@ -83,8 +76,8 @@ type DLog struct {
hostname string
}
-// New creates a new DTail logger.
-func New(sourceProcess, sourcePackage source.Source) *DLog {
+// new creates a new DTail logger.
+func new(sourceProcess, sourcePackage source.Source) *DLog {
hostname, err := os.Hostname()
if err != nil {
panic(err)
@@ -103,14 +96,12 @@ func New(sourceProcess, sourcePackage source.Source) *DLog {
}
func (d *DLog) start(ctx context.Context, wg *sync.WaitGroup) {
- go func() {
- defer wg.Done()
- var wg2 sync.WaitGroup
- wg2.Add(1)
- d.logger.Start(ctx, &wg2)
- <-ctx.Done()
- wg2.Wait()
- }()
+ defer wg.Done()
+ var wg2 sync.WaitGroup
+ wg2.Add(1)
+ d.logger.Start(ctx, &wg2)
+ <-ctx.Done()
+ wg2.Wait()
}
func (d *DLog) log(level level, args []interface{}) string {
@@ -202,6 +193,8 @@ func (d *DLog) Trace(args ...interface{}) string {
}
func (d *DLog) Devel(args ...interface{}) string {
+ _, file, line, _ := runtime.Caller(1)
+ args = append(args, fmt.Sprintf("at %s:%d", file, line))
return d.log(Devel, args)
}
diff --git a/internal/io/dlog/loggers/file.go b/internal/io/dlog/loggers/file.go
index 6e692a3..87280fd 100644
--- a/internal/io/dlog/loggers/file.go
+++ b/internal/io/dlog/loggers/file.go
@@ -126,7 +126,6 @@ func (f *file) getWriter(name string) *bufio.Writer {
if f.lastFileName == name {
return f.writer
}
-
if _, err := os.Stat(config.Common.LogDir); os.IsNotExist(err) {
if err = os.MkdirAll(config.Common.LogDir, 0755); err != nil {
panic(err)
@@ -144,7 +143,7 @@ func (f *file) getWriter(name string) *bufio.Writer {
f.writer.Flush()
f.fd.Close()
}
-
+ // Set new writer.
f.fd = newFd
f.writer = bufio.NewWriterSize(f.fd, 1)
f.lastFileName = name
@@ -153,8 +152,11 @@ func (f *file) getWriter(name string) *bufio.Writer {
}
func (f *file) flush() {
- defer f.writer.Flush()
-
+ defer func() {
+ if f.writer != nil {
+ f.writer.Flush()
+ }
+ }()
for {
select {
case m := <-f.bufferCh: