Skip to content

Commit

Permalink
configurable log file path
Browse files Browse the repository at this point in the history
  • Loading branch information
F1bonacc1 committed Jul 20, 2023
1 parent 2d99334 commit 6ff27e0
Show file tree
Hide file tree
Showing 3 changed files with 57 additions and 45 deletions.
63 changes: 48 additions & 15 deletions src/cmd/root.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,39 +3,61 @@ package cmd
import (
"fmt"
"github.com/f1bonacc1/process-compose/src/api"
"github.com/f1bonacc1/process-compose/src/config"
"github.com/f1bonacc1/process-compose/src/loader"
"github.com/rs/zerolog"
"github.com/rs/zerolog/log"
"github.com/spf13/cobra"
"io"
"os"
"strconv"
"strings"
"time"
)

var (
port int
isTui bool
opts *loader.LoaderOptions
pcAddress string
logPath string

// rootCmd represents the base command when called without any subcommands
rootCmd = &cobra.Command{
Use: "process-compose",
Short: "Processes scheduler and orchestrator",
Run: func(cmd *cobra.Command, args []string) {
if !cmd.Flags().Changed("tui") {
isTui = getTuiDefault()
}
runner := getProjectRunner([]string{}, false)
api.StartHttpServer(!isTui, port, runner)
runProject(runner)
},
Run: run,
}
)

const (
defaultPortNum = 8080
defaultPortNum = 8080
portEnvVarName = "PC_PORT_NUM"
tuiEnvVarName = "PC_DISABLE_TUI"
configEnvVarName = "PC_CONFIG_FILES"
)

func run(cmd *cobra.Command, args []string) {
file, err := os.OpenFile(logPath, config.LogFileFlags, config.LogFileMode)
if err != nil {
panic(err)
}
defer func() {
if file != nil {
_ = file.Close()
}
}()
setupLogger(file)
log.Info().Msgf("Process Compose %s", config.Version)

if !cmd.Flags().Changed("tui") {
isTui = getTuiDefault()
}
runner := getProjectRunner([]string{}, false)
api.StartHttpServer(!isTui, port, runner)
runProject(runner)
}

// Execute adds all child commands to the root command and sets flags appropriately.
// This is called by main.main(). It only needs to happen once to the rootCmd.
func Execute() {
Expand All @@ -50,18 +72,19 @@ func init() {
FileNames: []string{},
}

rootCmd.Flags().BoolVarP(&isTui, "tui", "t", true, "disable tui (-t=false) (env: PC_DISABLE_TUI)")
rootCmd.PersistentFlags().IntVarP(&port, "port", "p", getPortDefault(), "port number (env: PC_PORT_NUM)")
rootCmd.Flags().StringArrayVarP(&opts.FileNames, "config", "f", getConfigDefault(), "path to config files to load (env: PC_CONFIG_FILES)")
rootCmd.Flags().BoolVarP(&isTui, "tui", "t", true, "disable tui (-t=false) (env: "+tuiEnvVarName+")")
rootCmd.PersistentFlags().IntVarP(&port, "port", "p", getPortDefault(), "port number (env: "+portEnvVarName+")")
rootCmd.Flags().StringArrayVarP(&opts.FileNames, "config", "f", getConfigDefault(), "path to config files to load (env: "+configEnvVarName+")")
rootCmd.Flags().StringVarP(&logPath, "logFile", "", config.GetLogFilePath(), "Specify the log file path (env: "+config.LogPathEnvVarName+")")
}

func getTuiDefault() bool {
_, found := os.LookupEnv("PC_DISABLE_TUI")
_, found := os.LookupEnv(tuiEnvVarName)
return !found
}

func getPortDefault() int {
val, found := os.LookupEnv("PC_PORT_NUM")
val, found := os.LookupEnv(portEnvVarName)
if found {
port, err := strconv.Atoi(val)
if err != nil {
Expand All @@ -74,7 +97,7 @@ func getPortDefault() int {
}

func getConfigDefault() []string {
val, found := os.LookupEnv("PC_CONFIG_FILES")
val, found := os.LookupEnv(configEnvVarName)
if found {
return strings.Split(val, ",")
}
Expand All @@ -87,3 +110,13 @@ func logFatal(err error, format string, args ...interface{}) {
log.Err(err).Msgf(format, args...)
os.Exit(1)
}

func setupLogger(output io.Writer) {

log.Logger = log.Output(zerolog.ConsoleWriter{
Out: output,
TimeFormat: "06-01-02 15:04:05.000",
})
zerolog.TimeFieldFormat = time.RFC3339Nano
zerolog.SetGlobalLevel(zerolog.DebugLevel)
}
11 changes: 8 additions & 3 deletions src/config/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,12 +23,17 @@ var (
)

const (
pcConfigEnv = "PROC_COMP_CONFIG"
LogFileFlags = os.O_CREATE | os.O_APPEND | os.O_WRONLY | os.O_TRUNC
LogFileMode = os.FileMode(0600)
pcConfigEnv = "PROC_COMP_CONFIG"
LogPathEnvVarName = "PC_LOG_FILE"
LogFileFlags = os.O_CREATE | os.O_APPEND | os.O_WRONLY | os.O_TRUNC
LogFileMode = os.FileMode(0600)
)

func GetLogFilePath() string {
val, found := os.LookupEnv(LogPathEnvVarName)
if found {
return val
}
return filepath.Join(os.TempDir(), fmt.Sprintf("process-compose-%s%s.log", mustUser(), mode()))
}

Expand Down
28 changes: 1 addition & 27 deletions src/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,35 +2,9 @@ package main

import (
"github.com/f1bonacc1/process-compose/src/cmd"
"github.com/f1bonacc1/process-compose/src/config"
"github.com/rs/zerolog"
"github.com/rs/zerolog/log"
"io"
"os"
"time"
)

func setupLogger(output io.Writer) {

log.Logger = log.Output(zerolog.ConsoleWriter{
Out: output,
TimeFormat: "06-01-02 15:04:05.000",
})
zerolog.TimeFieldFormat = time.RFC3339Nano
zerolog.SetGlobalLevel(zerolog.DebugLevel)
}

func main() {
file, err := os.OpenFile(config.GetLogFilePath(), config.LogFileFlags, config.LogFileMode)
if err != nil {
panic(err)
}
defer func() {
if file != nil {
_ = file.Close()
}
}()
setupLogger(file)
log.Info().Msgf("Process Compose %s", config.Version)

cmd.Execute()
}

0 comments on commit 6ff27e0

Please sign in to comment.