github.com/masterhung0112/hk_server/v5@v5.0.0-20220302090640-ec71aef15e1c/cmd/hkserver/commands/logs.go (about)

     1  // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
     2  // See LICENSE.txt for license information.
     3  
     4  package commands
     5  
     6  import (
     7  	"io"
     8  	"os"
     9  
    10  	"github.com/spf13/cobra"
    11  
    12  	"github.com/masterhung0112/hk_server/v5/shared/mlog/human"
    13  )
    14  
    15  var LogsCmd = &cobra.Command{
    16  	Use:   "logs",
    17  	Short: "Display logs in a human-readable format",
    18  	RunE:  logsCmdF,
    19  }
    20  
    21  func init() {
    22  	LogsCmd.Flags().Bool("logrus", false, "Use logrus for formatting.")
    23  	RootCmd.AddCommand(LogsCmd)
    24  }
    25  
    26  func logsCmdF(command *cobra.Command, args []string) error {
    27  	// check stdin to see if we have a pipe
    28  	fi, err := os.Stdin.Stat()
    29  	if err != nil {
    30  		return err
    31  	}
    32  
    33  	var input io.Reader
    34  	if fi.Size() == 0 && fi.Mode()&os.ModeNamedPipe == 0 {
    35  		file, err := os.Open("mattermost.log")
    36  		if err != nil {
    37  			return err
    38  		}
    39  		defer file.Close()
    40  		input = file
    41  	} else {
    42  		input = os.Stdin
    43  	}
    44  	var writer human.LogWriter
    45  
    46  	if flag, _ := command.Flags().GetBool("logrus"); flag {
    47  		writer = human.NewLogrusWriter(os.Stdout)
    48  	} else {
    49  		writer = human.NewSimpleWriter(os.Stdout)
    50  	}
    51  	human.ProcessLogs(input, writer)
    52  
    53  	return nil
    54  }