summaryrefslogtreecommitdiff
path: root/internal
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2021-10-02 13:44:27 +0300
committerPaul Buetow <paul@buetow.org>2021-10-02 19:03:12 +0300
commit86ec83754e0ee7153ad55091f7b6da448bc529c5 (patch)
tree155687b0addb21a97a10a5ebb77928fadc3c62c3 /internal
parent12c79f68bb5bda6673819d7b754820ecfe6d08ff (diff)
add dcat test
Diffstat (limited to 'internal')
-rw-r--r--internal/config/common.go2
-rw-r--r--internal/config/initializer.go19
-rw-r--r--internal/io/dlog/loggers/stdout.go59
-rw-r--r--internal/io/fs/readfile.go10
4 files changed, 33 insertions, 57 deletions
diff --git a/internal/config/common.go b/internal/config/common.go
index acc8e6a..255bd28 100644
--- a/internal/config/common.go
+++ b/internal/config/common.go
@@ -6,7 +6,7 @@ type CommonConfig struct {
SSHPort int
// Enable experimental features (mainly for dev purposes)
ExperimentalFeaturesEnable bool `json:",omitempty"`
- // LogLevel defines how much is logged. TODO: Adjust JSONschema
+ // LogLevel defines how much is logged.
LogLevel string `json:",omitempty"`
// The log strategy to use, one of
// stdout: only log to stdout (useful when used with systemd)
diff --git a/internal/config/initializer.go b/internal/config/initializer.go
index f1a9ec4..0e725a6 100644
--- a/internal/config/initializer.go
+++ b/internal/config/initializer.go
@@ -72,6 +72,17 @@ func (c *initializer) transformConfig(args *Args, additionalArgs []string,
common.LogStrategy = "daily"
}
+ if args.Spartan {
+ args.Quiet = true
+ args.NoColor = true
+ if args.LogLevel == "" {
+ args.LogLevel = "ERROR"
+ }
+ }
+ if args.NoColor {
+ client.TermColorsEnable = false
+ }
+
if args.LogLevel != "" {
common.LogLevel = args.LogLevel
} else if args.ServersStr == "" && args.Discovery == "" {
@@ -82,14 +93,6 @@ func (c *initializer) transformConfig(args *Args, additionalArgs []string,
if args.SSHPort != DefaultSSHPort {
common.SSHPort = args.SSHPort
}
- if args.NoColor {
- client.TermColorsEnable = false
- }
-
- if args.Spartan {
- args.Quiet = true
- args.NoColor = true
- }
if args.Discovery == "" && args.ServersStr == "" {
// We are not connecting to any servers.
diff --git a/internal/io/dlog/loggers/stdout.go b/internal/io/dlog/loggers/stdout.go
index 9738323..05485c6 100644
--- a/internal/io/dlog/loggers/stdout.go
+++ b/internal/io/dlog/loggers/stdout.go
@@ -8,66 +8,47 @@ import (
)
type stdout struct {
- bufferCh chan string
pauseCh chan struct{}
resumeCh chan struct{}
+ mutex sync.Mutex
}
func newStdout() *stdout {
return &stdout{
- bufferCh: make(chan string, 100),
pauseCh: make(chan struct{}),
resumeCh: make(chan struct{}),
}
}
func (s *stdout) Start(ctx context.Context, wg *sync.WaitGroup) {
- pause := func(ctx context.Context) {
- select {
- case <-s.resumeCh:
- return
- case <-ctx.Done():
- return
- }
- }
-
- go func() {
- defer wg.Done()
-
- for {
- select {
- case message := <-s.bufferCh:
- fmt.Println(message)
- case <-s.pauseCh:
- pause(ctx)
- case <-ctx.Done():
- s.Flush()
- return
- }
- }
- }()
+ wg.Done()
}
func (s *stdout) Log(now time.Time, message string) {
- s.bufferCh <- message
+ s.log(message)
}
func (s *stdout) LogWithColors(now time.Time, message, coloredMessage string) {
- s.bufferCh <- coloredMessage
+ s.log(coloredMessage)
}
-func (s *stdout) Flush() {
- for {
- select {
- case message := <-s.bufferCh:
- fmt.Println(message)
- default:
- return
- }
+func (s *stdout) log(message string) {
+ s.mutex.Lock()
+ defer s.mutex.Unlock()
+
+ select {
+ case <-s.pauseCh:
+ // Pause until resumed.
+ <-s.resumeCh
+ default:
}
+
+ fmt.Println(message)
}
-func (s *stdout) Pause() { s.pauseCh <- struct{}{} }
-func (s *stdout) Resume() { s.resumeCh <- struct{}{} }
-func (s *stdout) Rotate() {}
+func (s *stdout) Pause() { s.pauseCh <- struct{}{} }
+func (s *stdout) Resume() { s.resumeCh <- struct{}{} }
+func (s *stdout) Flush() {}
+func (s *stdout) Rotate() {}
+
func (stdout) SupportsColors() bool { return true }
diff --git a/internal/io/fs/readfile.go b/internal/io/fs/readfile.go
index 07486a1..f128c07 100644
--- a/internal/io/fs/readfile.go
+++ b/internal/io/fs/readfile.go
@@ -13,8 +13,8 @@ import (
"sync"
"time"
- "github.com/mimecast/dtail/internal/io/line"
"github.com/mimecast/dtail/internal/io/dlog"
+ "github.com/mimecast/dtail/internal/io/line"
"github.com/mimecast/dtail/internal/io/pool"
"github.com/mimecast/dtail/internal/regex"
@@ -182,14 +182,6 @@ func (f readFile) read(ctx context.Context, fd *os.File, rawLines chan *bytes.Bu
switch b {
case '\n':
- /*
- // dcat/dgrep should actually transfer empty lines
- if message.Len() == 0 {
- time.Sleep(time.Millisecond * 100)
- continue
- }
- */
- //message.WriteString("\n")
select {
case rawLines <- message:
message = pool.BytesBuffer.Get().(*bytes.Buffer)