github.com/jfrog/jfrog-cli-core/v2@v2.51.0/utils/log/log.go (about) 1 package log 2 3 import ( 4 "github.com/jfrog/jfrog-cli-core/v2/utils/coreutils" 5 "github.com/jfrog/jfrog-client-go/utils" 6 "github.com/jfrog/jfrog-client-go/utils/errorutils" 7 "github.com/jfrog/jfrog-client-go/utils/log" 8 golangLog "log" 9 "os" 10 "path/filepath" 11 "strconv" 12 "time" 13 ) 14 15 func GetCliLogLevel() log.LevelType { 16 switch os.Getenv(coreutils.LogLevel) { 17 case "ERROR": 18 return log.ERROR 19 case "WARN": 20 return log.WARN 21 case "DEBUG": 22 return log.DEBUG 23 default: 24 return log.INFO 25 } 26 } 27 28 func getJfrogCliLogTimestamp() int { 29 switch os.Getenv(coreutils.LogTimestamp) { 30 case "DATE_AND_TIME": 31 return golangLog.Ldate | golangLog.Ltime | golangLog.Lmsgprefix 32 case "OFF": 33 return 0 34 default: 35 return golangLog.Ltime | golangLog.Lmsgprefix 36 } 37 } 38 39 func SetDefaultLogger() { 40 log.SetLogger(log.NewLoggerWithFlags(GetCliLogLevel(), nil, getJfrogCliLogTimestamp())) 41 } 42 43 const DefaultLogTimeLayout = "2006-01-02.15-04-05" 44 45 func CreateLogFile() (*os.File, error) { 46 currentTime := time.Now().Format(DefaultLogTimeLayout) 47 pid := os.Getpid() 48 return CreateCustomLogFile("jfrog-cli." + currentTime + "." + strconv.Itoa(pid) + ".log") 49 } 50 51 func CreateCustomLogFile(fileNameWithExt string) (*os.File, error) { 52 logDir, err := coreutils.CreateDirInJfrogHome(coreutils.JfrogLogsDirName) 53 if err != nil { 54 return nil, err 55 } 56 57 fileName := filepath.Join(logDir, fileNameWithExt) 58 file, err := os.OpenFile(fileName, os.O_CREATE|os.O_APPEND|os.O_WRONLY, 0666) 59 if err != nil { 60 return nil, errorutils.CheckError(err) 61 } 62 63 return file, nil 64 } 65 66 // Closes the log file and resets to the default logger 67 func CloseLogFile(logFile *os.File) error { 68 if logFile != nil { 69 SetDefaultLogger() 70 err := logFile.Close() 71 return utils.CheckErrorWithMessage(err, "Failed closing the log file") 72 } 73 return nil 74 }