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 }