internal/logging/logging.go (67 lines of code) (raw):

package logging import ( "os" "github.com/sirupsen/logrus" ) type Level string const ( Trace Level = "trace" Debug Level = "debug" Info Level = "info" Warn Level = "warn" Error Level = "error" Fatal Level = "fatal" ) // / Convert a logging level to a logrus level (uint32). func (l Level) Integer() logrus.Level { switch l { case Trace: return logrus.TraceLevel case Debug: return logrus.DebugLevel case Info: return logrus.InfoLevel case Warn: return logrus.WarnLevel case Error: return logrus.ErrorLevel case Fatal: return logrus.FatalLevel default: return logrus.InfoLevel } } // / Convert a string to a logging level. func LevelFromString(level string) Level { switch level { case string(Trace): return Trace case string(Debug): return Debug case string(Info): return Info case string(Warn): return Warn case string(Error): return Error case string(Fatal): return Fatal default: return Info } } var GlobalLogger = logrus.New() func Init(level Level) { GlobalLogger.SetFormatter(&logrus.TextFormatter{ DisableColors: false, FullTimestamp: true, DisableQuote: true, }) GlobalLogger.SetReportCaller(false) GlobalLogger.SetLevel(level.Integer()) file, err := os.OpenFile("ie.log", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666) if err == nil { GlobalLogger.SetOutput(file) } else { GlobalLogger.SetOutput(os.Stdout) GlobalLogger.Warn("Failed to log to file, using default stderr") } }