Skip to content
This repository has been archived by the owner on May 8, 2023. It is now read-only.

Commit

Permalink
Use the standard log package for logging
Browse files Browse the repository at this point in the history
Configure output to file/stdout using log.SetOutput rather than passing
loggers.
  • Loading branch information
theothertomelliott committed May 15, 2018
1 parent c716fa1 commit 57cc429
Show file tree
Hide file tree
Showing 23 changed files with 129 additions and 235 deletions.
10 changes: 5 additions & 5 deletions cmd/autocomplete.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,21 +9,21 @@ import (
"github.com/yext/edward/config"
)

func autocompleteServicesAndGroups(homeDir string, logger *log.Logger) {
func autocompleteServicesAndGroups(homeDir string) {
printCommandChildren(RootCmd)

configPath, err := config.GetConfigPathFromWorkingDirectory(homeDir)
if err != nil {
logger.Println("Autocomplete> Error getting config path:", err)
log.Println("Autocomplete> Error getting config path:", err)
return
}
if configPath == "" {
logger.Println("Autocomplete> Config file not found")
log.Println("Autocomplete> Config file not found")
return
}
cfg, err := config.LoadConfig(configPath, common.EdwardVersion, logger)
cfg, err := config.LoadConfig(configPath, common.EdwardVersion)
if err != nil {
logger.Println("Autocomplete> Error loading config:", err)
log.Println("Autocomplete> Error loading config:", err)
return
}

Expand Down
58 changes: 33 additions & 25 deletions cmd/root.go
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,6 @@ var cfgFile string

var edwardClient *edward.Client

var logger *log.Logger

var checkUpdateChan chan interface{}

// RootCmd represents the base command when called without any subcommands
Expand All @@ -45,35 +43,44 @@ Build, start and manage service instances with a single command.`,
return errors.WithStack(err)
}

if redirectLogs {
logger = log.New(os.Stdout, fmt.Sprintf("%v >", os.Args), log.Ldate|log.Ltime|log.Lmicroseconds|log.Lshortfile)
}

prefix := "edward"
if len(args) > 0 {
prefix = fmt.Sprintf("%s %s", cmd.Use, args[0])
}
logger = log.New(&lumberjack.Logger{

if redirectLogs {
log.SetOutput(os.Stdout)
log.SetPrefix(fmt.Sprintf("%v >", prefix))
log.SetFlags(log.Ldate | log.Ltime | log.Lmicroseconds | log.Lshortfile)
} else {
log.SetOutput(&lumberjack.Logger{
Filename: path.Join(dirConfig.EdwardLogDir, "edward.log"),
MaxSize: 50, // megabytes
MaxBackups: 30,
MaxAge: 1, //days
})
log.SetPrefix(fmt.Sprintf("%s > ", prefix))
log.SetFlags(log.Ldate | log.Ltime | log.Lmicroseconds | log.Lshortfile)
}

log.SetOutput(&lumberjack.Logger{
Filename: path.Join(dirConfig.EdwardLogDir, "edward.log"),
MaxSize: 50, // megabytes
MaxBackups: 30,
MaxAge: 1, //days
}, fmt.Sprintf("%s > ", prefix), log.Ldate|log.Ltime|log.Lmicroseconds|log.Lshortfile)
})
log.SetPrefix(fmt.Sprintf("%s > ", prefix))
log.SetFlags(log.Ldate | log.Ltime | log.Lmicroseconds | log.Lshortfile)

// Begin logging
logger.Printf("=== Edward v%v ===\n", common.EdwardVersion)
logger.Printf("Args: %v\n", os.Args)
log.Printf("=== Edward v%v ===\n", common.EdwardVersion)
log.Printf("Args: %v\n", os.Args)
// Recover from any panic and log appropriately
defer func() {
if r := recover(); r != nil {
fmt.Println("Recovered from panic:", r)
if logger != nil {
logger.Printf("Recovered from panic: %v", r)
}
}
if logger != nil {
logger.Printf("=== Exiting ===\n")
log.Println("Recovered from panic:", r)
}
log.Printf("=== Exiting ===\n")
}()

// Set the default config path
Expand All @@ -93,7 +100,7 @@ Build, start and manage service instances with a single command.`,
command := cmd.Use

if command != "generate" {
edwardClient, err = edward.NewClientWithConfig(configPath, common.EdwardVersion, logger)
edwardClient, err = edward.NewClientWithConfig(configPath, common.EdwardVersion)
if err != nil {
return errors.WithStack(err)
}
Expand All @@ -118,7 +125,6 @@ Build, start and manage service instances with a single command.`,
edwardClient.ServiceChecks = func(sgs []services.ServiceOrGroup) error {
return errors.WithStack(sudoIfNeeded(sgs))
}
edwardClient.Logger = logger
// Populate the Edward executable with this binary
edwardClient.EdwardExecutable = os.Args[0]

Expand Down Expand Up @@ -186,22 +192,24 @@ func Execute() {
logPrefix = fmt.Sprintf("edward %v >", os.Args[1:])
}

logger = log.New(&lumberjack.Logger{
log.SetOutput(&lumberjack.Logger{
Filename: filepath.Join(defaultHome.EdwardLogDir, "edward.log"),
MaxSize: 50, // megabytes
MaxBackups: 30,
MaxAge: 1, //days
}, logPrefix, log.Ldate|log.Ltime|log.Lmicroseconds|log.Lshortfile)
})
log.SetPrefix(logPrefix)
log.SetFlags(log.Ldate | log.Ltime | log.Lmicroseconds | log.Lshortfile)

for _, arg := range os.Args {
if arg == "--generate-bash-completion" {
autocompleteServicesAndGroups(defaultHome.Dir, logger)
autocompleteServicesAndGroups(defaultHome.Dir)
return
}
}

if err := RootCmd.Execute(); err != nil {
logger.Printf("Error: %v\n", err)
log.Printf("Error: %v\n", err)
os.Exit(1)
}
}
Expand Down Expand Up @@ -262,9 +270,9 @@ func initConfig() {

func checkUpdateAvailable(homeDir string, checkUpdateChan chan interface{}) {
defer close(checkUpdateChan)
updateAvailable, latestVersion, err := updates.UpdateAvailable("yext", "edward", common.EdwardVersion, filepath.Join(homeDir, ".cache/version"), logger)
updateAvailable, latestVersion, err := updates.UpdateAvailable("yext", "edward", common.EdwardVersion, filepath.Join(homeDir, ".cache/version"))
if err != nil {
logger.Println("Error checking for updates:", err)
log.Println("Error checking for updates:", err)
return
}

Expand Down
1 change: 0 additions & 1 deletion cmd/run.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,6 @@ var runCmd = &cobra.Command{
edwardClient.DirConfig,
*runFlags.noWatch,
*runFlags.directory,
edwardClient.Logger,
)
if err != nil {
return errors.WithStack(err)
Expand Down
11 changes: 6 additions & 5 deletions cmd/sudo.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import (
"bytes"
"fmt"
"io/ioutil"
"log"
"os"
"os/user"
"strings"
Expand Down Expand Up @@ -34,13 +35,13 @@ func ensureSudoAble() error {
buffer.WriteString(strings.Join(os.Args, " "))
buffer.WriteString("\n")

logger.Printf("Writing sudoAbility script\n")
log.Printf("Writing sudoAbility script\n")
file, err := createScriptFile("sudoAbility", buffer.String())
if err != nil {
return errors.WithStack(err)
}

logger.Printf("Launching sudoAbility script: %v\n", file.Name())
log.Printf("Launching sudoAbility script: %v\n", file.Name())
err = syscall.Exec(file.Name(), []string{file.Name()}, os.Environ())
if err != nil {
return errors.WithStack(err)
Expand All @@ -58,18 +59,18 @@ func prepareForSudo() error {
if isChild == "" {
return errors.WithStack(ensureSudoAble())
}
logger.Println("Child process, sudo should be available")
log.Println("Child process, sudo should be available")
return nil
}

func sudoIfNeeded(sgs []services.ServiceOrGroup) error {
for _, sg := range sgs {
if sg.IsSudo(services.OperationConfig{}) {
logger.Printf("sudo required for %v\n", sg.GetName())
log.Printf("sudo required for %v\n", sg.GetName())
return errors.WithStack(prepareForSudo())
}
}
logger.Printf("sudo not required for any services/groups\n")
log.Printf("sudo not required for any services/groups\n")
return nil
}

Expand Down
23 changes: 0 additions & 23 deletions common/logging.go

This file was deleted.

Loading

0 comments on commit 57cc429

Please sign in to comment.