github.com/jfrog/jfrog-cli-core/v2@v2.52.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  }