summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--internal/clients/stats.go9
-rw-r--r--internal/config/config.go3
-rw-r--r--internal/io/signal/signal.go4
3 files changed, 11 insertions, 5 deletions
diff --git a/internal/clients/stats.go b/internal/clients/stats.go
index d5bcd2d..17343b5 100644
--- a/internal/clients/stats.go
+++ b/internal/clients/stats.go
@@ -8,6 +8,7 @@ import (
"sync"
"time"
+ "github.com/mimecast/dtail/internal/config"
"github.com/mimecast/dtail/internal/io/logger"
)
@@ -62,7 +63,7 @@ func (s *stats) Start(ctx context.Context, throttleCh <-chan struct{}, statsCh <
switch force {
case true:
messages = append(messages, fmt.Sprintf("Connection stats: %s", stats))
- s.forcePrintStats(messages)
+ s.printStatsOnInterrupt(messages)
default:
logger.Info(stats)
}
@@ -74,12 +75,12 @@ func (s *stats) Start(ctx context.Context, throttleCh <-chan struct{}, statsCh <
}
}
-func (s *stats) forcePrintStats(messages []string) {
+func (s *stats) printStatsOnInterrupt(messages []string) {
logger.Pause()
for _, message := range messages {
- fmt.Println(fmt.Sprintf("\t%s", message))
+ fmt.Println(fmt.Sprintf(" %s", message))
}
- time.Sleep(time.Second * 3)
+ time.Sleep(time.Second * time.Duration(config.InterruptTimeoutS))
logger.Resume()
}
diff --git a/internal/config/config.go b/internal/config/config.go
index dc96d6b..276ddcf 100644
--- a/internal/config/config.go
+++ b/internal/config/config.go
@@ -15,6 +15,9 @@ const ScheduleUser string = "DTAIL-SCHEDULE"
// ContinuousUser is used for non-interactive continuous mapreduce queries.
const ContinuousUser string = "DTAIL-CONTINUOUS"
+// InterruptTimeoutS is used to terminate DTail when Ctrl+C was pressed twice within a given interval.
+const InterruptTimeoutS int = 3
+
// Client holds a DTail client configuration.
var Client *ClientConfig
diff --git a/internal/io/signal/signal.go b/internal/io/signal/signal.go
index 06abb0b..27c7852 100644
--- a/internal/io/signal/signal.go
+++ b/internal/io/signal/signal.go
@@ -6,6 +6,8 @@ import (
gosignal "os/signal"
"syscall"
"time"
+
+ "github.com/mimecast/dtail/internal/config"
)
// StatsCh returns a channel for "please print stats" signalling.
@@ -27,7 +29,7 @@ func InterruptCh(ctx context.Context) <-chan string {
select {
case <-sigIntCh:
os.Exit(0)
- case <-time.After(time.Second * 3):
+ case <-time.After(time.Second * time.Duration(config.InterruptTimeoutS)):
}
default:
// Stats already printed.