github.com/abolfazlbeh/zhycan@v0.0.0-20230819144214-24cf38237387/pkg/logger/logger.go (about)

     1  package logger
     2  
     3  import (
     4  	"github.com/abolfazlbeh/zhycan/internal/logger"
     5  	"time"
     6  )
     7  
     8  type LogError logger.Error
     9  type LogObject logger.LogObject
    10  type LogLevel logger.LogLevel
    11  type LogType logger.LogType
    12  
    13  // Some Constants - used with LogLevel
    14  const (
    15  	DEBUG   LogLevel = LogLevel(logger.DEBUG)
    16  	INFO    LogLevel = LogLevel(logger.INFO)
    17  	WARNING LogLevel = LogLevel(logger.WARNING)
    18  	ERROR   LogLevel = LogLevel(logger.ERROR)
    19  )
    20  
    21  var (
    22  	FuncMaintenanceType LogType = LogType(logger.NewLogType(logger.FuncMaintenanceType.String()))
    23  	DebugType           LogType = LogType(logger.NewLogType(logger.DebugType.String()))
    24  )
    25  
    26  // NewLogObject - enhance method to create and return reference of LogObject
    27  func NewLogObject(level LogLevel, module string, logType LogType, eventTime time.Time, message interface{}, additional interface{}) *LogObject {
    28  	return &LogObject{
    29  		Level:      logger.LogLevel(level),
    30  		Module:     module,
    31  		LogType:    logger.LogType(logType).String(),
    32  		Time:       eventTime.UTC().UnixNano(),
    33  		Message:    message,
    34  		Additional: additional,
    35  	}
    36  }
    37  
    38  // Log - write log object to the channel
    39  func Log(object *LogObject) *LogError {
    40  	l, err := logger.GetManager().GetLogger()
    41  	if err == nil {
    42  		if l.IsInitialized() {
    43  			p := logger.LogObject(*object)
    44  			l.Log(&p)
    45  		}
    46  		return nil
    47  	}
    48  
    49  	p := LogError(*err)
    50  	return &p
    51  }
    52  
    53  // Sync - sync all logs to medium
    54  func Sync() *LogError {
    55  	l, err := logger.GetManager().GetLogger()
    56  	if err == nil {
    57  		if l.IsInitialized() {
    58  			l.Sync()
    59  		}
    60  		return nil
    61  	}
    62  
    63  	p := LogError(*err)
    64  	return &p
    65  }
    66  
    67  // Close - it closes logger channel
    68  func Close() *LogError {
    69  	l, err := logger.GetManager().GetLogger()
    70  	if err == nil {
    71  		if l.IsInitialized() {
    72  			l.Close()
    73  		}
    74  		return nil
    75  	}
    76  
    77  	p := LogError(*err)
    78  	return &p
    79  }