feat: mirror log tailing support for logs:vector-logs command

This commit is contained in:
Jose Diaz-Gonzalez
2021-01-07 01:43:55 -05:00
parent b186d9d66c
commit eda71e3ffe
5 changed files with 18 additions and 8 deletions

View File

@@ -5,7 +5,7 @@ logs <app> [-h] [-t] [-n num] [-q] [-p process] # Display recent log output
logs:failed [--all|<app>] # Shows the last failed deploy logs logs:failed [--all|<app>] # Shows the last failed deploy logs
logs:report [<app>] [<flag>] # Displays a logs report for one or more apps logs:report [<app>] [<flag>] # Displays a logs report for one or more apps
logs:set [--global|<app>] <key> <value> # Set or clear a logs property for an app logs:set [--global|<app>] <key> <value> # Set or clear a logs property for an app
logs:vector-logs # Tail the logs of the vector container logs:vector-logs [--num num] [--tail] # Display vector log output
logs:vector-start # Start the vector logging container logs:vector-start # Start the vector logging container
logs:vector-stop # Stop the vector logging container logs:vector-stop # Stop the vector logging container
``` ```

View File

@@ -4,6 +4,7 @@ import (
"bufio" "bufio"
"fmt" "fmt"
"os" "os"
"strconv"
"strings" "strings"
) )
@@ -95,8 +96,15 @@ func LogVerboseQuietContainerLogs(containerID string) {
} }
// LogVerboseQuietContainerLogsTail is the verbose log formatter for container logs with tail mode enabled // LogVerboseQuietContainerLogsTail is the verbose log formatter for container logs with tail mode enabled
func LogVerboseQuietContainerLogsTail(containerID string) { func LogVerboseQuietContainerLogsTail(containerID string, lines int, tail bool) {
sc := NewShellCmdWithArgs(DockerBin(), "container", "logs", containerID, "--follow", "--tail", "10") args := []string{"container", "logs", containerID}
if lines > 0 {
args = append(args, "--tail", strconv.Itoa(lines))
}
if tail {
args = append(args, "--follow")
}
sc := NewShellCmdWithArgs(DockerBin(), args...)
stdout, _ := sc.Command.StdoutPipe() stdout, _ := sc.Command.StdoutPipe()
sc.Command.Start() sc.Command.Start()
@@ -104,7 +112,7 @@ func LogVerboseQuietContainerLogsTail(containerID string) {
scanner.Split(bufio.ScanLines) scanner.Split(bufio.ScanLines)
for scanner.Scan() { for scanner.Scan() {
m := scanner.Text() m := scanner.Text()
fmt.Println(m) LogVerboseQuiet(m)
} }
sc.Command.Wait() sc.Command.Wait()
} }

View File

@@ -26,7 +26,7 @@ Additional commands:`
logs:failed [--all|<app>], Shows the last failed deploy logs logs:failed [--all|<app>], Shows the last failed deploy logs
logs:report [<app>] [<flag>], Displays a logs report for one or more apps logs:report [<app>] [<flag>], Displays a logs report for one or more apps
logs:set [--global|<app>] <key> <value>, Set or clear a logs property for an app logs:set [--global|<app>] <key> <value>, Set or clear a logs property for an app
logs:vector-logs, Tail the logs of the vector container logs:vector-logs [--num num] [--tail], Display vector log output
logs:vector-start, Start the vector logging container logs:vector-start, Start the vector logging container
logs:vector-stop, Stop the vector logging container logs:vector-stop, Stop the vector logging container
` `

View File

@@ -47,8 +47,10 @@ func main() {
err = logs.CommandSet(appName, property, value) err = logs.CommandSet(appName, property, value)
case "vector-logs": case "vector-logs":
args := flag.NewFlagSet("logs:vector-logs", flag.ExitOnError) args := flag.NewFlagSet("logs:vector-logs", flag.ExitOnError)
num := args.Int("num", 100, "the number of lines to display")
tail := args.Bool("tail", false, "continually stream logs")
args.Parse(os.Args[2:]) args.Parse(os.Args[2:])
err = logs.CommandVectorLogs() err = logs.CommandVectorLogs(*num, *tail)
case "vector-start": case "vector-start":
args := flag.NewFlagSet("logs:vector-start", flag.ExitOnError) args := flag.NewFlagSet("logs:vector-start", flag.ExitOnError)
vectorImage := args.String("vector-image", logs.VectorImage, "--vector-image: the name of the docker image to run for vector") vectorImage := args.String("vector-image", logs.VectorImage, "--vector-image: the name of the docker image to run for vector")

View File

@@ -85,7 +85,7 @@ func CommandSet(appName string, property string, value string) error {
} }
// CommandVectorLogs tails the log output for the vector container // CommandVectorLogs tails the log output for the vector container
func CommandVectorLogs() error { func CommandVectorLogs(lines int, tail bool) error {
if !common.ContainerExists(vectorContainerName) { if !common.ContainerExists(vectorContainerName) {
return errors.New("Vector container does not exist") return errors.New("Vector container does not exist")
} }
@@ -95,7 +95,7 @@ func CommandVectorLogs() error {
} }
common.LogInfo1Quiet("Tailing vector container logs") common.LogInfo1Quiet("Tailing vector container logs")
common.LogVerboseQuietContainerLogsTail(vectorContainerName) common.LogVerboseQuietContainerLogsTail(vectorContainerName, lines, tail)
return nil return nil
} }