mirror of
https://github.com/minio/minio.git
synced 2025-01-25 13:43:17 -05:00
Modify fatalIf, startup and update message logging code (#5780)
Use a common logging framework to log fatalIf, startup, Info and Update messages.
This commit is contained in:
parent
cef992a395
commit
57a3d9c16c
@ -34,9 +34,9 @@ func checkUpdate(mode string) {
|
|||||||
// Its OK to ignore any errors during doUpdate() here.
|
// Its OK to ignore any errors during doUpdate() here.
|
||||||
if updateMsg, _, currentReleaseTime, latestReleaseTime, err := getUpdateInfo(2*time.Second, mode); err == nil {
|
if updateMsg, _, currentReleaseTime, latestReleaseTime, err := getUpdateInfo(2*time.Second, mode); err == nil {
|
||||||
if globalInplaceUpdateDisabled {
|
if globalInplaceUpdateDisabled {
|
||||||
logger.Println(updateMsg)
|
logger.StartupMessage(updateMsg)
|
||||||
} else {
|
} else {
|
||||||
logger.Println(prepareUpdateMessage("Run `minio update`", latestReleaseTime.Sub(currentReleaseTime)))
|
logger.StartupMessage(prepareUpdateMessage("Run `minio update`", latestReleaseTime.Sub(currentReleaseTime)))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -48,7 +48,7 @@ func initConfig() {
|
|||||||
logger.FatalIf(loadConfig(), "Unable to load config version: '%s'.", serverConfigVersion)
|
logger.FatalIf(loadConfig(), "Unable to load config version: '%s'.", serverConfigVersion)
|
||||||
} else {
|
} else {
|
||||||
logger.FatalIf(newConfig(), "Unable to initialize minio config for the first time.")
|
logger.FatalIf(newConfig(), "Unable to initialize minio config for the first time.")
|
||||||
logger.Println("Created minio configuration file successfully at " + getConfigDir())
|
logger.Info("Created minio configuration file successfully at " + getConfigDir())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -30,7 +30,7 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
// DO NOT EDIT following message template, please open a github issue to discuss instead.
|
// DO NOT EDIT following message template, please open a github issue to discuss instead.
|
||||||
var configMigrateMSGTemplate = "Configuration file %s migrated from version '%s' to '%s' successfully.\n"
|
var configMigrateMSGTemplate = "Configuration file %s migrated from version '%s' to '%s' successfully."
|
||||||
|
|
||||||
// Migrates all config versions from "1" to "18".
|
// Migrates all config versions from "1" to "18".
|
||||||
func migrateConfig() error {
|
func migrateConfig() error {
|
||||||
@ -195,7 +195,7 @@ func purgeV1() error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
os.RemoveAll(configFile)
|
os.RemoveAll(configFile)
|
||||||
logger.Println("Removed unsupported config version ‘1’.")
|
logger.Info("Removed unsupported config version ‘1’.")
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -253,7 +253,7 @@ func migrateV2ToV3() error {
|
|||||||
return fmt.Errorf("Failed to migrate config from ‘%s’ to ‘%s’. %v", cv2.Version, srvConfig.Version, err)
|
return fmt.Errorf("Failed to migrate config from ‘%s’ to ‘%s’. %v", cv2.Version, srvConfig.Version, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
logger.Printf(configMigrateMSGTemplate, configFile, cv2.Version, srvConfig.Version)
|
logger.Info(configMigrateMSGTemplate, configFile, cv2.Version, srvConfig.Version)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -291,7 +291,7 @@ func migrateV3ToV4() error {
|
|||||||
return fmt.Errorf("Failed to migrate config from ‘%s’ to ‘%s’. %v", cv3.Version, srvConfig.Version, err)
|
return fmt.Errorf("Failed to migrate config from ‘%s’ to ‘%s’. %v", cv3.Version, srvConfig.Version, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
logger.Printf(configMigrateMSGTemplate, configFile, cv3.Version, srvConfig.Version)
|
logger.Info(configMigrateMSGTemplate, configFile, cv3.Version, srvConfig.Version)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -332,7 +332,7 @@ func migrateV4ToV5() error {
|
|||||||
return fmt.Errorf("Failed to migrate config from ‘%s’ to ‘%s’. %v", cv4.Version, srvConfig.Version, err)
|
return fmt.Errorf("Failed to migrate config from ‘%s’ to ‘%s’. %v", cv4.Version, srvConfig.Version, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
logger.Printf(configMigrateMSGTemplate, configFile, cv4.Version, srvConfig.Version)
|
logger.Info(configMigrateMSGTemplate, configFile, cv4.Version, srvConfig.Version)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -421,7 +421,7 @@ func migrateV5ToV6() error {
|
|||||||
return fmt.Errorf("Failed to migrate config from ‘%s’ to ‘%s’. %v", cv5.Version, srvConfig.Version, err)
|
return fmt.Errorf("Failed to migrate config from ‘%s’ to ‘%s’. %v", cv5.Version, srvConfig.Version, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
logger.Printf(configMigrateMSGTemplate, configFile, cv5.Version, srvConfig.Version)
|
logger.Info(configMigrateMSGTemplate, configFile, cv5.Version, srvConfig.Version)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -477,7 +477,7 @@ func migrateV6ToV7() error {
|
|||||||
return fmt.Errorf("Failed to migrate config from ‘%s’ to ‘%s’. %v", cv6.Version, srvConfig.Version, err)
|
return fmt.Errorf("Failed to migrate config from ‘%s’ to ‘%s’. %v", cv6.Version, srvConfig.Version, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
logger.Printf(configMigrateMSGTemplate, configFile, cv6.Version, srvConfig.Version)
|
logger.Info(configMigrateMSGTemplate, configFile, cv6.Version, srvConfig.Version)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -540,7 +540,7 @@ func migrateV7ToV8() error {
|
|||||||
return fmt.Errorf("Failed to migrate config from ‘%s’ to ‘%s’. %v", cv7.Version, srvConfig.Version, err)
|
return fmt.Errorf("Failed to migrate config from ‘%s’ to ‘%s’. %v", cv7.Version, srvConfig.Version, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
logger.Printf(configMigrateMSGTemplate, configFile, cv7.Version, srvConfig.Version)
|
logger.Info(configMigrateMSGTemplate, configFile, cv7.Version, srvConfig.Version)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -610,7 +610,7 @@ func migrateV8ToV9() error {
|
|||||||
return fmt.Errorf("Failed to migrate config from ‘%s’ to ‘%s’. %v", cv8.Version, srvConfig.Version, err)
|
return fmt.Errorf("Failed to migrate config from ‘%s’ to ‘%s’. %v", cv8.Version, srvConfig.Version, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
logger.Printf(configMigrateMSGTemplate, configFile, cv8.Version, srvConfig.Version)
|
logger.Info(configMigrateMSGTemplate, configFile, cv8.Version, srvConfig.Version)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -678,7 +678,7 @@ func migrateV9ToV10() error {
|
|||||||
return fmt.Errorf("Failed to migrate config from ‘%s’ to ‘%s’. %v", cv9.Version, srvConfig.Version, err)
|
return fmt.Errorf("Failed to migrate config from ‘%s’ to ‘%s’. %v", cv9.Version, srvConfig.Version, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
logger.Printf(configMigrateMSGTemplate, configFile, cv9.Version, srvConfig.Version)
|
logger.Info(configMigrateMSGTemplate, configFile, cv9.Version, srvConfig.Version)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -749,7 +749,7 @@ func migrateV10ToV11() error {
|
|||||||
return fmt.Errorf("Failed to migrate config from ‘%s’ to ‘%s’. %v", cv10.Version, srvConfig.Version, err)
|
return fmt.Errorf("Failed to migrate config from ‘%s’ to ‘%s’. %v", cv10.Version, srvConfig.Version, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
logger.Printf(configMigrateMSGTemplate, configFile, cv10.Version, srvConfig.Version)
|
logger.Info(configMigrateMSGTemplate, configFile, cv10.Version, srvConfig.Version)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -847,7 +847,7 @@ func migrateV11ToV12() error {
|
|||||||
return fmt.Errorf("Failed to migrate config from ‘%s’ to ‘%s’. %v", cv11.Version, srvConfig.Version, err)
|
return fmt.Errorf("Failed to migrate config from ‘%s’ to ‘%s’. %v", cv11.Version, srvConfig.Version, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
logger.Printf(configMigrateMSGTemplate, configFile, cv11.Version, srvConfig.Version)
|
logger.Info(configMigrateMSGTemplate, configFile, cv11.Version, srvConfig.Version)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -927,7 +927,7 @@ func migrateV12ToV13() error {
|
|||||||
return fmt.Errorf("Failed to migrate config from ‘%s’ to ‘%s’. %v", cv12.Version, srvConfig.Version, err)
|
return fmt.Errorf("Failed to migrate config from ‘%s’ to ‘%s’. %v", cv12.Version, srvConfig.Version, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
logger.Printf(configMigrateMSGTemplate, configFile, cv12.Version, srvConfig.Version)
|
logger.Info(configMigrateMSGTemplate, configFile, cv12.Version, srvConfig.Version)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1012,7 +1012,7 @@ func migrateV13ToV14() error {
|
|||||||
return fmt.Errorf("Failed to migrate config from ‘%s’ to ‘%s’. %v", cv13.Version, srvConfig.Version, err)
|
return fmt.Errorf("Failed to migrate config from ‘%s’ to ‘%s’. %v", cv13.Version, srvConfig.Version, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
logger.Printf(configMigrateMSGTemplate, configFile, cv13.Version, srvConfig.Version)
|
logger.Info(configMigrateMSGTemplate, configFile, cv13.Version, srvConfig.Version)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1101,7 +1101,7 @@ func migrateV14ToV15() error {
|
|||||||
return fmt.Errorf("Failed to migrate config from ‘%s’ to ‘%s’. %v", cv14.Version, srvConfig.Version, err)
|
return fmt.Errorf("Failed to migrate config from ‘%s’ to ‘%s’. %v", cv14.Version, srvConfig.Version, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
logger.Printf(configMigrateMSGTemplate, configFile, cv14.Version, srvConfig.Version)
|
logger.Info(configMigrateMSGTemplate, configFile, cv14.Version, srvConfig.Version)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1191,7 +1191,7 @@ func migrateV15ToV16() error {
|
|||||||
return fmt.Errorf("Failed to migrate config from ‘%s’ to ‘%s’. %v", cv15.Version, srvConfig.Version, err)
|
return fmt.Errorf("Failed to migrate config from ‘%s’ to ‘%s’. %v", cv15.Version, srvConfig.Version, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
logger.Printf(configMigrateMSGTemplate, configFile, cv15.Version, srvConfig.Version)
|
logger.Info(configMigrateMSGTemplate, configFile, cv15.Version, srvConfig.Version)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1312,7 +1312,7 @@ func migrateV16ToV17() error {
|
|||||||
return fmt.Errorf("Failed to migrate config from ‘%s’ to ‘%s’. %v", cv16.Version, srvConfig.Version, err)
|
return fmt.Errorf("Failed to migrate config from ‘%s’ to ‘%s’. %v", cv16.Version, srvConfig.Version, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
logger.Printf(configMigrateMSGTemplate, configFile, cv16.Version, srvConfig.Version)
|
logger.Info(configMigrateMSGTemplate, configFile, cv16.Version, srvConfig.Version)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1416,7 +1416,7 @@ func migrateV17ToV18() error {
|
|||||||
return fmt.Errorf("Failed to migrate config from ‘%s’ to ‘%s’. %v", cv17.Version, srvConfig.Version, err)
|
return fmt.Errorf("Failed to migrate config from ‘%s’ to ‘%s’. %v", cv17.Version, srvConfig.Version, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
logger.Printf(configMigrateMSGTemplate, configFile, cv17.Version, srvConfig.Version)
|
logger.Info(configMigrateMSGTemplate, configFile, cv17.Version, srvConfig.Version)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1522,7 +1522,7 @@ func migrateV18ToV19() error {
|
|||||||
return fmt.Errorf("Failed to migrate config from ‘%s’ to ‘%s’. %v", cv18.Version, srvConfig.Version, err)
|
return fmt.Errorf("Failed to migrate config from ‘%s’ to ‘%s’. %v", cv18.Version, srvConfig.Version, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
logger.Printf(configMigrateMSGTemplate, configFile, cv18.Version, srvConfig.Version)
|
logger.Info(configMigrateMSGTemplate, configFile, cv18.Version, srvConfig.Version)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1627,7 +1627,7 @@ func migrateV19ToV20() error {
|
|||||||
return fmt.Errorf("Failed to migrate config from ‘%s’ to ‘%s’. %v", cv19.Version, srvConfig.Version, err)
|
return fmt.Errorf("Failed to migrate config from ‘%s’ to ‘%s’. %v", cv19.Version, srvConfig.Version, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
logger.Printf(configMigrateMSGTemplate, configFile, cv19.Version, srvConfig.Version)
|
logger.Info(configMigrateMSGTemplate, configFile, cv19.Version, srvConfig.Version)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1731,7 +1731,7 @@ func migrateV20ToV21() error {
|
|||||||
return fmt.Errorf("Failed to migrate config from ‘%s’ to ‘%s’. %v", cv20.Version, srvConfig.Version, err)
|
return fmt.Errorf("Failed to migrate config from ‘%s’ to ‘%s’. %v", cv20.Version, srvConfig.Version, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
logger.Printf(configMigrateMSGTemplate, configFile, cv20.Version, srvConfig.Version)
|
logger.Info(configMigrateMSGTemplate, configFile, cv20.Version, srvConfig.Version)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1835,7 +1835,7 @@ func migrateV21ToV22() error {
|
|||||||
return fmt.Errorf("Failed to migrate config from ‘%s’ to ‘%s’. %v", cv21.Version, srvConfig.Version, err)
|
return fmt.Errorf("Failed to migrate config from ‘%s’ to ‘%s’. %v", cv21.Version, srvConfig.Version, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
logger.Printf(configMigrateMSGTemplate, configFile, cv21.Version, srvConfig.Version)
|
logger.Info(configMigrateMSGTemplate, configFile, cv21.Version, srvConfig.Version)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1948,6 +1948,6 @@ func migrateV22ToV23() error {
|
|||||||
return fmt.Errorf("Failed to migrate config from ‘%s’ to ‘%s’. %v", cv22.Version, srvConfig.Version, err)
|
return fmt.Errorf("Failed to migrate config from ‘%s’ to ‘%s’. %v", cv22.Version, srvConfig.Version, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
logger.Printf(configMigrateMSGTemplate, configFile, cv22.Version, srvConfig.Version)
|
logger.Info(configMigrateMSGTemplate, configFile, cv22.Version, srvConfig.Version)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
@ -209,7 +209,7 @@ func StartGateway(ctx *cli.Context, gw Gateway) {
|
|||||||
|
|
||||||
// Print a warning message if gateway is not ready for production before the startup banner.
|
// Print a warning message if gateway is not ready for production before the startup banner.
|
||||||
if !gw.Production() {
|
if !gw.Production() {
|
||||||
logger.Println(colorYellow("\n *** Warning: Not Ready for Production ***"))
|
logger.StartupMessage(colorYellow("\n *** Warning: Not Ready for Production ***"))
|
||||||
}
|
}
|
||||||
|
|
||||||
// Print gateway startup message.
|
// Print gateway startup message.
|
||||||
|
@ -56,12 +56,12 @@ func printGatewayCommonMsg(apiEndpoints []string) {
|
|||||||
|
|
||||||
apiEndpointStr := strings.Join(apiEndpoints, " ")
|
apiEndpointStr := strings.Join(apiEndpoints, " ")
|
||||||
// Colorize the message and print.
|
// Colorize the message and print.
|
||||||
logger.Println(colorBlue("\nEndpoint: ") + colorBold(fmt.Sprintf(getFormatStr(len(apiEndpointStr), 1), apiEndpointStr)))
|
logger.StartupMessage(colorBlue("\nEndpoint: ") + colorBold(fmt.Sprintf(getFormatStr(len(apiEndpointStr), 1), apiEndpointStr)))
|
||||||
logger.Println(colorBlue("AccessKey: ") + colorBold(fmt.Sprintf("%s ", cred.AccessKey)))
|
logger.StartupMessage(colorBlue("AccessKey: ") + colorBold(fmt.Sprintf("%s ", cred.AccessKey)))
|
||||||
logger.Println(colorBlue("SecretKey: ") + colorBold(fmt.Sprintf("%s ", cred.SecretKey)))
|
logger.StartupMessage(colorBlue("SecretKey: ") + colorBold(fmt.Sprintf("%s ", cred.SecretKey)))
|
||||||
|
|
||||||
if globalIsBrowserEnabled {
|
if globalIsBrowserEnabled {
|
||||||
logger.Println(colorBlue("\nBrowser Access:"))
|
logger.StartupMessage(colorBlue("\nBrowser Access:"))
|
||||||
logger.Println(fmt.Sprintf(getFormatStr(len(apiEndpointStr), 3), apiEndpointStr))
|
logger.StartupMessage(fmt.Sprintf(getFormatStr(len(apiEndpointStr), 3), apiEndpointStr))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -163,9 +163,9 @@ func (g *Sia) NewGatewayLayer(creds auth.Credentials) (minio.ObjectLayer, error)
|
|||||||
colorBlue := color.New(color.FgBlue).SprintfFunc()
|
colorBlue := color.New(color.FgBlue).SprintfFunc()
|
||||||
colorBold := color.New(color.Bold).SprintFunc()
|
colorBold := color.New(color.Bold).SprintFunc()
|
||||||
|
|
||||||
logger.Println(colorBlue("\nSia Gateway Configuration:"))
|
logger.StartupMessage(colorBlue("\nSia Gateway Configuration:"))
|
||||||
logger.Println(colorBlue(" Sia Daemon API Address:") + colorBold(fmt.Sprintf(" %s\n", sia.Address)))
|
logger.StartupMessage(colorBlue(" Sia Daemon API Address:") + colorBold(fmt.Sprintf(" %s\n", sia.Address)))
|
||||||
logger.Println(colorBlue(" Sia Temp Directory:") + colorBold(fmt.Sprintf(" %s\n", sia.TempDir)))
|
logger.StartupMessage(colorBlue(" Sia Temp Directory:") + colorBold(fmt.Sprintf(" %s\n", sia.TempDir)))
|
||||||
return sia, nil
|
return sia, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -45,7 +45,8 @@ type Level int8
|
|||||||
|
|
||||||
// Enumerated level types
|
// Enumerated level types
|
||||||
const (
|
const (
|
||||||
Error Level = iota + 1
|
Information Level = iota + 1
|
||||||
|
Error
|
||||||
Fatal
|
Fatal
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -61,6 +62,8 @@ var matchingFuncNames = [...]string{
|
|||||||
func (level Level) String() string {
|
func (level Level) String() string {
|
||||||
var lvlStr string
|
var lvlStr string
|
||||||
switch level {
|
switch level {
|
||||||
|
case Information:
|
||||||
|
lvlStr = "INFO"
|
||||||
case Error:
|
case Error:
|
||||||
lvlStr = "ERROR"
|
lvlStr = "ERROR"
|
||||||
case Fatal:
|
case Fatal:
|
||||||
@ -69,9 +72,26 @@ func (level Level) String() string {
|
|||||||
return lvlStr
|
return lvlStr
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Console interface describes the methods that needs to be implemented to satisfy the interface requirements.
|
||||||
|
type Console interface {
|
||||||
|
json(msg string, args ...interface{})
|
||||||
|
quiet(msg string, args ...interface{})
|
||||||
|
pretty(msg string, args ...interface{})
|
||||||
|
}
|
||||||
|
|
||||||
|
func consoleLog(console Console, msg string, args ...interface{}) {
|
||||||
|
if jsonFlag {
|
||||||
|
console.json(msg, args...)
|
||||||
|
} else if quiet {
|
||||||
|
console.quiet(msg, args...)
|
||||||
|
} else {
|
||||||
|
console.pretty(msg, args...)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
type traceEntry struct {
|
type traceEntry struct {
|
||||||
Message string `json:"message"`
|
Message string `json:"message,omitempty"`
|
||||||
Source []string `json:"source"`
|
Source []string `json:"source,omitempty"`
|
||||||
Variables map[string]string `json:"variables,omitempty"`
|
Variables map[string]string `json:"variables,omitempty"`
|
||||||
}
|
}
|
||||||
type args struct {
|
type args struct {
|
||||||
@ -81,18 +101,18 @@ type args struct {
|
|||||||
|
|
||||||
type api struct {
|
type api struct {
|
||||||
Name string `json:"name,omitempty"`
|
Name string `json:"name,omitempty"`
|
||||||
Args args `json:"args,omitempty"`
|
Args *args `json:"args,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type logEntry struct {
|
type logEntry struct {
|
||||||
Level string `json:"level"`
|
Level string `json:"level"`
|
||||||
Time string `json:"time"`
|
Time string `json:"time"`
|
||||||
API api `json:"api,omitempty"`
|
API *api `json:"api,omitempty"`
|
||||||
RemoteHost string `json:"remotehost,omitempty"`
|
RemoteHost string `json:"remotehost,omitempty"`
|
||||||
RequestID string `json:"requestID,omitempty"`
|
RequestID string `json:"requestID,omitempty"`
|
||||||
UserAgent string `json:"userAgent,omitempty"`
|
UserAgent string `json:"userAgent,omitempty"`
|
||||||
Cause string `json:"cause,omitempty"`
|
Message string `json:"message,omitempty"`
|
||||||
Trace traceEntry `json:"error"`
|
Trace *traceEntry `json:"error,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// quiet: Hide startup messages if enabled
|
// quiet: Hide startup messages if enabled
|
||||||
@ -112,20 +132,6 @@ func EnableJSON() {
|
|||||||
quiet = true
|
quiet = true
|
||||||
}
|
}
|
||||||
|
|
||||||
// Println - wrapper to console.Println() with quiet flag.
|
|
||||||
func Println(args ...interface{}) {
|
|
||||||
if !quiet {
|
|
||||||
console.Println(args...)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Printf - wrapper to console.Printf() with quiet flag.
|
|
||||||
func Printf(format string, args ...interface{}) {
|
|
||||||
if !quiet {
|
|
||||||
console.Printf(format, args...)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Init sets the trimStrings to possible GOPATHs
|
// Init sets the trimStrings to possible GOPATHs
|
||||||
// and GOROOT directories. Also append github.com/minio/minio
|
// and GOROOT directories. Also append github.com/minio/minio
|
||||||
// This is done to clean up the filename, when stack trace is
|
// This is done to clean up the filename, when stack trace is
|
||||||
@ -171,6 +177,17 @@ func trimTrace(f string) string {
|
|||||||
return filepath.FromSlash(f)
|
return filepath.FromSlash(f)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func getSource() string {
|
||||||
|
pc, file, lineNumber, ok := runtime.Caller(5)
|
||||||
|
if ok {
|
||||||
|
// Clean up the common prefixes
|
||||||
|
file = trimTrace(file)
|
||||||
|
_, funcName := filepath.Split(runtime.FuncForPC(pc).Name())
|
||||||
|
return fmt.Sprintf("%v:%v:%v()", file, lineNumber, funcName)
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
// getTrace method - creates and returns stack trace
|
// getTrace method - creates and returns stack trace
|
||||||
func getTrace(traceLevel int) []string {
|
func getTrace(traceLevel int) []string {
|
||||||
var trace []string
|
var trace []string
|
||||||
@ -203,57 +220,6 @@ func getTrace(traceLevel int) []string {
|
|||||||
return trace
|
return trace
|
||||||
}
|
}
|
||||||
|
|
||||||
func logIf(level Level, err error, msg string,
|
|
||||||
data ...interface{}) {
|
|
||||||
if err == nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
// Get the cause for the Error
|
|
||||||
cause := err.Error()
|
|
||||||
// Get full stack trace
|
|
||||||
trace := getTrace(3)
|
|
||||||
// Get time
|
|
||||||
timeOfError := time.Now().UTC().Format(time.RFC3339Nano)
|
|
||||||
// Output the formatted log message at console
|
|
||||||
var output string
|
|
||||||
message := fmt.Sprintf(msg, data...)
|
|
||||||
if jsonFlag {
|
|
||||||
logJSON, err := json.Marshal(&logEntry{
|
|
||||||
Level: level.String(),
|
|
||||||
Time: timeOfError,
|
|
||||||
Cause: cause,
|
|
||||||
Trace: traceEntry{Source: trace, Message: message},
|
|
||||||
})
|
|
||||||
if err != nil {
|
|
||||||
panic("json marshal of logEntry failed: " + err.Error())
|
|
||||||
}
|
|
||||||
output = string(logJSON)
|
|
||||||
} else {
|
|
||||||
// Add a sequence number and formatting for each stack trace
|
|
||||||
// No formatting is required for the first entry
|
|
||||||
trace[0] = "1: " + trace[0]
|
|
||||||
for i, element := range trace[1:] {
|
|
||||||
trace[i+1] = fmt.Sprintf("%8v: %s", i+2, element)
|
|
||||||
}
|
|
||||||
errMsg := fmt.Sprintf("[%s] [%s] %s (%s)",
|
|
||||||
timeOfError, level.String(), message, cause)
|
|
||||||
|
|
||||||
output = fmt.Sprintf("\nTrace: %s\n%s",
|
|
||||||
strings.Join(trace, "\n"),
|
|
||||||
colorRed(colorBold(errMsg)))
|
|
||||||
}
|
|
||||||
fmt.Println(output)
|
|
||||||
|
|
||||||
if level == Fatal {
|
|
||||||
os.Exit(1)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// FatalIf :
|
|
||||||
func FatalIf(err error, msg string, data ...interface{}) {
|
|
||||||
logIf(Fatal, err, msg, data...)
|
|
||||||
}
|
|
||||||
|
|
||||||
// LogIf :
|
// LogIf :
|
||||||
func LogIf(ctx context.Context, err error) {
|
func LogIf(ctx context.Context, err error) {
|
||||||
if err == nil {
|
if err == nil {
|
||||||
@ -289,8 +255,8 @@ func LogIf(ctx context.Context, err error) {
|
|||||||
RequestID: req.RequestID,
|
RequestID: req.RequestID,
|
||||||
UserAgent: req.UserAgent,
|
UserAgent: req.UserAgent,
|
||||||
Time: time.Now().UTC().Format(time.RFC3339Nano),
|
Time: time.Now().UTC().Format(time.RFC3339Nano),
|
||||||
API: api{Name: API, Args: args{Bucket: req.BucketName, Object: req.ObjectName}},
|
API: &api{Name: API, Args: &args{Bucket: req.BucketName, Object: req.ObjectName}},
|
||||||
Trace: traceEntry{Message: message, Source: trace, Variables: tags},
|
Trace: &traceEntry{Message: message, Source: trace, Variables: tags},
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
@ -348,3 +314,93 @@ func LogIf(ctx context.Context, err error) {
|
|||||||
}
|
}
|
||||||
fmt.Println(output)
|
fmt.Println(output)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// FatalIf :
|
||||||
|
func FatalIf(err error, msg string, data ...interface{}) {
|
||||||
|
if err != nil {
|
||||||
|
if msg != "" {
|
||||||
|
consoleLog(fatalMessage, msg, data...)
|
||||||
|
} else {
|
||||||
|
consoleLog(fatalMessage, err.Error())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var fatalMessage fatalMsg
|
||||||
|
|
||||||
|
type fatalMsg struct {
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f fatalMsg) json(msg string, args ...interface{}) {
|
||||||
|
logJSON, err := json.Marshal(&logEntry{
|
||||||
|
Level: Fatal.String(),
|
||||||
|
Time: time.Now().UTC().Format(time.RFC3339Nano),
|
||||||
|
Trace: &traceEntry{Message: fmt.Sprintf(msg, args...), Source: []string{getSource()}},
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
fmt.Println(string(logJSON))
|
||||||
|
os.Exit(1)
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f fatalMsg) quiet(msg string, args ...interface{}) {
|
||||||
|
f.pretty(msg, args...)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f fatalMsg) pretty(msg string, args ...interface{}) {
|
||||||
|
errMsg := fmt.Sprintf(msg, args...)
|
||||||
|
fmt.Println(colorRed(colorBold("Error: " + errMsg)))
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
|
||||||
|
var info infoMsg
|
||||||
|
|
||||||
|
type infoMsg struct {
|
||||||
|
}
|
||||||
|
|
||||||
|
func (i infoMsg) json(msg string, args ...interface{}) {
|
||||||
|
logJSON, err := json.Marshal(&logEntry{
|
||||||
|
Level: Information.String(),
|
||||||
|
Message: fmt.Sprintf(msg, args...),
|
||||||
|
Time: time.Now().UTC().Format(time.RFC3339Nano),
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
fmt.Println(string(logJSON))
|
||||||
|
}
|
||||||
|
|
||||||
|
func (i infoMsg) quiet(msg string, args ...interface{}) {
|
||||||
|
i.pretty(msg, args...)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (i infoMsg) pretty(msg string, args ...interface{}) {
|
||||||
|
console.Printf(msg, args...)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Info :
|
||||||
|
func Info(msg string, data ...interface{}) {
|
||||||
|
consoleLog(info, msg+"\n", data...)
|
||||||
|
}
|
||||||
|
|
||||||
|
var startupMessage startUpMsg
|
||||||
|
|
||||||
|
type startUpMsg struct {
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s startUpMsg) json(msg string, args ...interface{}) {
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s startUpMsg) quiet(msg string, args ...interface{}) {
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s startUpMsg) pretty(msg string, args ...interface{}) {
|
||||||
|
console.Printf(msg, args...)
|
||||||
|
}
|
||||||
|
|
||||||
|
// StartupMessage :
|
||||||
|
func StartupMessage(msg string, data ...interface{}) {
|
||||||
|
consoleLog(startupMessage, msg+"\n", data...)
|
||||||
|
}
|
||||||
|
@ -22,7 +22,6 @@ import (
|
|||||||
"os"
|
"os"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/minio/mc/pkg/console"
|
|
||||||
"github.com/minio/minio/cmd/logger"
|
"github.com/minio/minio/cmd/logger"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -218,11 +217,11 @@ func waitForFormatXL(ctx context.Context, firstDisk bool, endpoints EndpointList
|
|||||||
switch err {
|
switch err {
|
||||||
case errNotFirstDisk:
|
case errNotFirstDisk:
|
||||||
// Fresh setup, wait for first server to be up.
|
// Fresh setup, wait for first server to be up.
|
||||||
console.Println("Waiting for the first server to format the disks.")
|
logger.Info("Waiting for the first server to format the disks.")
|
||||||
continue
|
continue
|
||||||
case errXLReadQuorum:
|
case errXLReadQuorum:
|
||||||
// no quorum available continue to wait for minimum number of servers.
|
// no quorum available continue to wait for minimum number of servers.
|
||||||
console.Printf("Waiting for a minimum of %d disks to come online (elapsed %s)\n", len(endpoints)/2, getElapsedTime())
|
logger.Info("Waiting for a minimum of %d disks to come online (elapsed %s)\n", len(endpoints)/2, getElapsedTime())
|
||||||
continue
|
continue
|
||||||
case errXLV3ThisEmpty:
|
case errXLV3ThisEmpty:
|
||||||
// need to wait for this error to be healed, so continue.
|
// need to wait for this error to be healed, so continue.
|
||||||
|
@ -115,17 +115,17 @@ func printServerCommonMsg(apiEndpoints []string) {
|
|||||||
apiEndpointStr := strings.Join(apiEndpoints, " ")
|
apiEndpointStr := strings.Join(apiEndpoints, " ")
|
||||||
|
|
||||||
// Colorize the message and print.
|
// Colorize the message and print.
|
||||||
logger.Println(colorBlue("Endpoint: ") + colorBold(fmt.Sprintf(getFormatStr(len(apiEndpointStr), 1), apiEndpointStr)))
|
logger.StartupMessage(colorBlue("Endpoint: ") + colorBold(fmt.Sprintf(getFormatStr(len(apiEndpointStr), 1), apiEndpointStr)))
|
||||||
logger.Println(colorBlue("AccessKey: ") + colorBold(fmt.Sprintf("%s ", cred.AccessKey)))
|
logger.StartupMessage(colorBlue("AccessKey: ") + colorBold(fmt.Sprintf("%s ", cred.AccessKey)))
|
||||||
logger.Println(colorBlue("SecretKey: ") + colorBold(fmt.Sprintf("%s ", cred.SecretKey)))
|
logger.StartupMessage(colorBlue("SecretKey: ") + colorBold(fmt.Sprintf("%s ", cred.SecretKey)))
|
||||||
if region != "" {
|
if region != "" {
|
||||||
logger.Println(colorBlue("Region: ") + colorBold(fmt.Sprintf(getFormatStr(len(region), 3), region)))
|
logger.StartupMessage(colorBlue("Region: ") + colorBold(fmt.Sprintf(getFormatStr(len(region), 3), region)))
|
||||||
}
|
}
|
||||||
printEventNotifiers()
|
printEventNotifiers()
|
||||||
|
|
||||||
if globalIsBrowserEnabled {
|
if globalIsBrowserEnabled {
|
||||||
logger.Println(colorBlue("\nBrowser Access:"))
|
logger.StartupMessage(colorBlue("\nBrowser Access:"))
|
||||||
logger.Println(fmt.Sprintf(getFormatStr(len(apiEndpointStr), 3), apiEndpointStr))
|
logger.StartupMessage(fmt.Sprintf(getFormatStr(len(apiEndpointStr), 3), apiEndpointStr))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -141,7 +141,7 @@ func printEventNotifiers() {
|
|||||||
arnMsg += colorBold(fmt.Sprintf(getFormatStr(len(arn), 1), arn))
|
arnMsg += colorBold(fmt.Sprintf(getFormatStr(len(arn), 1), arn))
|
||||||
}
|
}
|
||||||
|
|
||||||
logger.Println(arnMsg)
|
logger.StartupMessage(arnMsg)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Prints startup message for command line access. Prints link to our documentation
|
// Prints startup message for command line access. Prints link to our documentation
|
||||||
@ -151,24 +151,24 @@ func printCLIAccessMsg(endPoint string, alias string) {
|
|||||||
cred := globalServerConfig.GetCredential()
|
cred := globalServerConfig.GetCredential()
|
||||||
|
|
||||||
// Configure 'mc', following block prints platform specific information for minio client.
|
// Configure 'mc', following block prints platform specific information for minio client.
|
||||||
logger.Println(colorBlue("\nCommand-line Access: ") + mcQuickStartGuide)
|
logger.StartupMessage(colorBlue("\nCommand-line Access: ") + mcQuickStartGuide)
|
||||||
if runtime.GOOS == globalWindowsOSName {
|
if runtime.GOOS == globalWindowsOSName {
|
||||||
mcMessage := fmt.Sprintf("$ mc.exe config host add %s %s %s %s", alias, endPoint, cred.AccessKey, cred.SecretKey)
|
mcMessage := fmt.Sprintf("$ mc.exe config host add %s %s %s %s", alias, endPoint, cred.AccessKey, cred.SecretKey)
|
||||||
logger.Println(fmt.Sprintf(getFormatStr(len(mcMessage), 3), mcMessage))
|
logger.StartupMessage(fmt.Sprintf(getFormatStr(len(mcMessage), 3), mcMessage))
|
||||||
} else {
|
} else {
|
||||||
mcMessage := fmt.Sprintf("$ mc config host add %s %s %s %s", alias, endPoint, cred.AccessKey, cred.SecretKey)
|
mcMessage := fmt.Sprintf("$ mc config host add %s %s %s %s", alias, endPoint, cred.AccessKey, cred.SecretKey)
|
||||||
logger.Println(fmt.Sprintf(getFormatStr(len(mcMessage), 3), mcMessage))
|
logger.StartupMessage(fmt.Sprintf(getFormatStr(len(mcMessage), 3), mcMessage))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Prints startup message for Object API acces, prints link to our SDK documentation.
|
// Prints startup message for Object API acces, prints link to our SDK documentation.
|
||||||
func printObjectAPIMsg() {
|
func printObjectAPIMsg() {
|
||||||
logger.Println(colorBlue("\nObject API (Amazon S3 compatible):"))
|
logger.StartupMessage(colorBlue("\nObject API (Amazon S3 compatible):"))
|
||||||
logger.Println(colorBlue(" Go: ") + fmt.Sprintf(getFormatStr(len(goQuickStartGuide), 8), goQuickStartGuide))
|
logger.StartupMessage(colorBlue(" Go: ") + fmt.Sprintf(getFormatStr(len(goQuickStartGuide), 8), goQuickStartGuide))
|
||||||
logger.Println(colorBlue(" Java: ") + fmt.Sprintf(getFormatStr(len(javaQuickStartGuide), 6), javaQuickStartGuide))
|
logger.StartupMessage(colorBlue(" Java: ") + fmt.Sprintf(getFormatStr(len(javaQuickStartGuide), 6), javaQuickStartGuide))
|
||||||
logger.Println(colorBlue(" Python: ") + fmt.Sprintf(getFormatStr(len(pyQuickStartGuide), 4), pyQuickStartGuide))
|
logger.StartupMessage(colorBlue(" Python: ") + fmt.Sprintf(getFormatStr(len(pyQuickStartGuide), 4), pyQuickStartGuide))
|
||||||
logger.Println(colorBlue(" JavaScript: ") + jsQuickStartGuide)
|
logger.StartupMessage(colorBlue(" JavaScript: ") + jsQuickStartGuide)
|
||||||
logger.Println(colorBlue(" .NET: ") + fmt.Sprintf(getFormatStr(len(dotnetQuickStartGuide), 6), dotnetQuickStartGuide))
|
logger.StartupMessage(colorBlue(" .NET: ") + fmt.Sprintf(getFormatStr(len(dotnetQuickStartGuide), 6), dotnetQuickStartGuide))
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get formatted disk/storage info message.
|
// Get formatted disk/storage info message.
|
||||||
@ -185,15 +185,14 @@ func getStorageInfoMsg(storageInfo StorageInfo) string {
|
|||||||
|
|
||||||
// Prints startup message of storage capacity and erasure information.
|
// Prints startup message of storage capacity and erasure information.
|
||||||
func printStorageInfo(storageInfo StorageInfo) {
|
func printStorageInfo(storageInfo StorageInfo) {
|
||||||
logger.Println(getStorageInfoMsg(storageInfo))
|
logger.StartupMessage(getStorageInfoMsg(storageInfo) + "\n")
|
||||||
logger.Println()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func printCacheStorageInfo(storageInfo StorageInfo) {
|
func printCacheStorageInfo(storageInfo StorageInfo) {
|
||||||
msg := fmt.Sprintf("%s %s Free, %s Total", colorBlue("Cache Capacity:"),
|
msg := fmt.Sprintf("%s %s Free, %s Total", colorBlue("Cache Capacity:"),
|
||||||
humanize.IBytes(uint64(storageInfo.Free)),
|
humanize.IBytes(uint64(storageInfo.Free)),
|
||||||
humanize.IBytes(uint64(storageInfo.Total)))
|
humanize.IBytes(uint64(storageInfo.Total)))
|
||||||
logger.Println(msg)
|
logger.StartupMessage(msg)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Prints certificate expiry date warning
|
// Prints certificate expiry date warning
|
||||||
@ -216,5 +215,5 @@ func getCertificateChainMsg(certs []*x509.Certificate) string {
|
|||||||
|
|
||||||
// Prints the certificate expiry message.
|
// Prints the certificate expiry message.
|
||||||
func printCertificateMsg(certs []*x509.Certificate) {
|
func printCertificateMsg(certs []*x509.Certificate) {
|
||||||
logger.Println(getCertificateChainMsg(certs))
|
logger.StartupMessage(getCertificateChainMsg(certs))
|
||||||
}
|
}
|
||||||
|
@ -68,14 +68,14 @@ func handleSignals() {
|
|||||||
exit(err == nil && oerr == nil)
|
exit(err == nil && oerr == nil)
|
||||||
case osSignal := <-globalOSSignalCh:
|
case osSignal := <-globalOSSignalCh:
|
||||||
stopHTTPTrace()
|
stopHTTPTrace()
|
||||||
logger.Printf("Exiting on signal %v\n", osSignal)
|
logger.Info("Exiting on signal %v", osSignal)
|
||||||
exit(stopProcess())
|
exit(stopProcess())
|
||||||
case signal := <-globalServiceSignalCh:
|
case signal := <-globalServiceSignalCh:
|
||||||
switch signal {
|
switch signal {
|
||||||
case serviceStatus:
|
case serviceStatus:
|
||||||
// Ignore this at the moment.
|
// Ignore this at the moment.
|
||||||
case serviceRestart:
|
case serviceRestart:
|
||||||
logger.Println("Restarting on service signal")
|
logger.Info("Restarting on service signal")
|
||||||
err := globalHTTPServer.Shutdown()
|
err := globalHTTPServer.Shutdown()
|
||||||
logger.LogIf(context.Background(), err)
|
logger.LogIf(context.Background(), err)
|
||||||
stopHTTPTrace()
|
stopHTTPTrace()
|
||||||
@ -84,7 +84,7 @@ func handleSignals() {
|
|||||||
|
|
||||||
exit(err == nil && rerr == nil)
|
exit(err == nil && rerr == nil)
|
||||||
case serviceStop:
|
case serviceStop:
|
||||||
logger.Println("Stopping on service signal")
|
logger.Info("Stopping on service signal")
|
||||||
stopHTTPTrace()
|
stopHTTPTrace()
|
||||||
exit(stopProcess())
|
exit(stopProcess())
|
||||||
}
|
}
|
||||||
|
@ -501,27 +501,27 @@ func mainUpdate(ctx *cli.Context) {
|
|||||||
minioMode := ""
|
minioMode := ""
|
||||||
updateMsg, sha256Hex, _, latestReleaseTime, err := getUpdateInfo(10*time.Second, minioMode)
|
updateMsg, sha256Hex, _, latestReleaseTime, err := getUpdateInfo(10*time.Second, minioMode)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logger.Println(err)
|
logger.Info(err.Error())
|
||||||
os.Exit(-1)
|
os.Exit(-1)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Nothing to update running the latest release.
|
// Nothing to update running the latest release.
|
||||||
if updateMsg == "" {
|
if updateMsg == "" {
|
||||||
logger.Println(greenColorSprintf("You are already running the most recent version of ‘minio’."))
|
logger.Info(greenColorSprintf("You are already running the most recent version of ‘minio’."))
|
||||||
os.Exit(0)
|
os.Exit(0)
|
||||||
}
|
}
|
||||||
|
|
||||||
logger.Println(updateMsg)
|
logger.Info(updateMsg)
|
||||||
// if the in-place update is disabled then we shouldn't ask the
|
// if the in-place update is disabled then we shouldn't ask the
|
||||||
// user to update the binaries.
|
// user to update the binaries.
|
||||||
if strings.Contains(updateMsg, minioReleaseURL) && !globalInplaceUpdateDisabled {
|
if strings.Contains(updateMsg, minioReleaseURL) && !globalInplaceUpdateDisabled {
|
||||||
var successMsg string
|
var successMsg string
|
||||||
successMsg, err = doUpdate(sha256Hex, latestReleaseTime, shouldUpdate(quiet, sha256Hex, latestReleaseTime))
|
successMsg, err = doUpdate(sha256Hex, latestReleaseTime, shouldUpdate(quiet, sha256Hex, latestReleaseTime))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logger.Println(err)
|
logger.Info(err.Error())
|
||||||
os.Exit(-1)
|
os.Exit(-1)
|
||||||
}
|
}
|
||||||
logger.Println(successMsg)
|
logger.Info(successMsg)
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user