github.com/muhammedhassanm/blockchain@v0.0.0-20200120143007-697261defd4d/sawtooth-core-master/sdk/go/src/sawtooth_sdk/logging/logger.go (about) 1 /** 2 * Copyright 2017 Intel Corporation 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 * ------------------------------------------------------------------------------ 16 */ 17 18 package logging 19 20 import ( 21 "fmt" 22 "io" 23 "log" 24 "os" 25 ) 26 27 const ( 28 CRITICAL = 50 29 ERROR = 40 30 WARN = 30 31 INFO = 20 32 DEBUG = 10 33 ) 34 35 // Set the calldepth so we get the right file when logging 36 const ( 37 CALLDEPTH = 3 38 FLAGS = log.Lshortfile | log.LstdFlags | log.Lmicroseconds 39 ) 40 41 type Logger struct { 42 logger *log.Logger 43 level int 44 } 45 46 var _LOGGER *Logger = nil 47 48 func Get() *Logger { 49 if _LOGGER == nil { 50 _LOGGER = &Logger{ 51 logger: log.New(os.Stdout, "", FLAGS), 52 level: DEBUG, 53 } 54 } 55 return _LOGGER 56 } 57 58 func (self *Logger) SetLevel(level int) { 59 self.level = level 60 } 61 62 func (self *Logger) SetOutput(w io.Writer) { 63 self.logger.SetOutput(w) 64 } 65 66 func (self *Logger) Debugf(format string, v ...interface{}) { 67 if self.level <= DEBUG { 68 self.logf("DEBUG", format, v...) 69 } 70 } 71 72 func (self *Logger) Debug(v ...interface{}) { 73 if self.level <= DEBUG { 74 self.log("DEBUG", v...) 75 } 76 } 77 78 func (self *Logger) Infof(format string, v ...interface{}) { 79 if self.level <= INFO { 80 self.logf("INFO", format, v...) 81 } 82 } 83 84 func (self *Logger) Info(v ...interface{}) { 85 if self.level <= INFO { 86 self.log("INFO", v...) 87 } 88 } 89 90 func (self *Logger) Warnf(format string, v ...interface{}) { 91 if self.level <= WARN { 92 self.logf("WARN", format, v...) 93 } 94 } 95 96 func (self *Logger) Warn(v ...interface{}) { 97 if self.level <= WARN { 98 self.log("WARN", v...) 99 } 100 } 101 102 func (self *Logger) Errorf(format string, v ...interface{}) { 103 if self.level <= ERROR { 104 self.logf("ERROR", format, v...) 105 } 106 } 107 108 func (self *Logger) Error(v ...interface{}) { 109 if self.level <= ERROR { 110 self.log("ERROR", v...) 111 } 112 } 113 114 func (self *Logger) Criticalf(format string, v ...interface{}) { 115 if self.level <= CRITICAL { 116 self.logf("CRITICAL", format, v...) 117 } 118 } 119 120 func (self *Logger) Critical(v ...interface{}) { 121 if self.level <= CRITICAL { 122 self.log("CRITICAL", v...) 123 } 124 } 125 126 func (self *Logger) logf(prefix string, format string, v ...interface{}) { 127 self.logger.Output(CALLDEPTH, "["+prefix+"] "+fmt.Sprintf(format, v...)) 128 } 129 130 func (self *Logger) log(prefix string, v ...interface{}) { 131 self.logger.Output(CALLDEPTH, "["+prefix+"] "+fmt.Sprint(v...)) 132 }