github.com/jfrog/jfrog-cli-go@v1.22.1-0.20200318093948-4826ef344ffd/utils/log/log.go (about)

     1  package log
     2  
     3  import (
     4  	"github.com/jfrog/jfrog-cli-go/utils/cliutils"
     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  	"os"
     9  	"path/filepath"
    10  	"strconv"
    11  	"time"
    12  )
    13  
    14  func GetCliLogLevel() log.LevelType {
    15  	switch os.Getenv(cliutils.LogLevel) {
    16  	case "ERROR":
    17  		return log.ERROR
    18  	case "WARN":
    19  		return log.WARN
    20  	case "DEBUG":
    21  		return log.DEBUG
    22  	default:
    23  		return log.INFO
    24  	}
    25  }
    26  
    27  func SetDefaultLogger() {
    28  	log.SetLogger(log.NewLogger(GetCliLogLevel(), nil))
    29  }
    30  
    31  func CreateLogFile() (*os.File, error) {
    32  	logDir, err := cliutils.CreateDirInJfrogHome("logs")
    33  	if err != nil {
    34  		return nil, err
    35  	}
    36  
    37  	currentTime := time.Now().Format("2006-01-02.15-04-05")
    38  	pid := os.Getpid()
    39  
    40  	fileName := filepath.Join(logDir, "jfrog-cli."+currentTime+"."+strconv.Itoa(pid)+".log")
    41  	file, err := os.OpenFile(fileName, os.O_CREATE|os.O_APPEND|os.O_WRONLY, 0666)
    42  	if err != nil {
    43  		return nil, errorutils.CheckError(err)
    44  	}
    45  
    46  	return file, nil
    47  }
    48  
    49  // Closes the log file and resets to the default logger
    50  func CloseLogFile(logFile *os.File) {
    51  	if logFile != nil {
    52  		SetDefaultLogger()
    53  		err := logFile.Close()
    54  		utils.CheckErrorWithMessage(err, "failed closing the log file")
    55  	}
    56  }