github.com/abolfazlbeh/zhycan@v0.0.0-20230819144214-24cf38237387/internal/logger/types.go (about) 1 package logger 2 3 // Imports needed list 4 import ( 5 "strings" 6 "time" 7 ) 8 9 // Some Constants 10 const ( 11 MAX = 6 12 ) 13 14 // LogObject - all methods that want to log must transfer object of this. 15 type LogObject struct { 16 Level LogLevel 17 Module string 18 LogType string 19 Time int64 20 Additional interface{} 21 Message interface{} 22 } 23 24 // NewLogObject - enhance method to create and return reference of LogObject 25 func NewLogObject(level LogLevel, module string, logType LogType, eventTime time.Time, message interface{}, additional interface{}) *LogObject { 26 return &LogObject{ 27 Level: level, 28 Module: module, 29 LogType: logType.String(), 30 Time: eventTime.UTC().UnixNano(), 31 Message: message, 32 Additional: additional, 33 } 34 } 35 36 // LogLevel Object 37 type LogLevel int 38 39 // Some Constants - used with LogLevel 40 const ( 41 DEBUG LogLevel = MAX - iota 42 INFO 43 WARNING 44 ERROR 45 ) 46 47 func (l LogLevel) String() string { 48 switch l { 49 case DEBUG: 50 return "DEBUG" 51 case INFO: 52 return "INFO" 53 case WARNING: 54 return "WARNING" 55 case ERROR: 56 return "ERROR" 57 } 58 return "DEFAULT" 59 } 60 61 // IsLogLevel - check whether is a true log level 62 func (l LogLevel) IsLogLevel() bool { 63 if l <= DEBUG && l >= ERROR { 64 return true 65 } 66 67 return false 68 } 69 70 func StringToLogLevel(level string) LogLevel { 71 switch strings.ToUpper(level) { 72 case "DEBUG": 73 return DEBUG 74 case "INFO": 75 return INFO 76 case "WARNING": 77 return WARNING 78 case "ERROR": 79 return ERROR 80 } 81 return DEBUG 82 } 83 84 // LogType Object 85 type LogType struct { 86 name string 87 } 88 89 // NewLogType - Create A New Log Type 90 func NewLogType(name string) LogType { 91 return LogType{name: name} 92 } 93 94 var ( 95 FuncMaintenanceType = LogType{name: "FUNC_MAINT"} 96 DebugType = LogType{name: "DEBUG_INFORMATION"} 97 ) 98 99 func (l LogType) String() string { 100 return l.name 101 }