| package log |
| |
| /* |
| http://en.wikipedia.org/wiki/Syslog |
| |
| Code Severity Keyword |
| 0 Emergency emerg (panic) System is unusable. |
| |
| A "panic" condition usually affecting multiple apps/servers/sites. At this |
| level it would usually notify all tech staff on call. |
| |
| 1 Alert alert Action must be taken immediately. |
| |
| Should be corrected immediately, therefore notify staff who can fix the |
| problem. An example would be the loss of a primary ISP connection. |
| |
| 2 Critical crit Critical conditions. |
| |
| Should be corrected immediately, but indicates failure in a secondary |
| system, an example is a loss of a backup ISP connection. |
| |
| 3 Error err (error) Error conditions. |
| |
| Non-urgent failures, these should be relayed to developers or admins; each |
| item must be resolved within a given time. |
| |
| 4 Warning warning (warn) Warning conditions. |
| |
| Warning messages, not an error, but indication that an error will occur if |
| action is not taken, e.g. file system 85% full - each item must be resolved |
| within a given time. |
| |
| 5 Notice notice Normal but significant condition. |
| |
| Events that are unusual but not error conditions - might be summarized in |
| an email to developers or admins to spot potential problems - no immediate |
| action required. |
| |
| 6 Informational info Informational messages. |
| |
| Normal operational messages - may be harvested for reporting, measuring |
| throughput, etc. - no action required. |
| |
| 7 Debug debug Debug-level messages. |
| |
| Info useful to developers for debugging the application, not useful during operations. |
| */ |
| |
| const ( |
| // LevelEnv chooses level from LOGXI environment variable or defaults |
| // to LevelInfo |
| LevelEnv = -10000 |
| |
| // LevelOff means logging is disabled for logger. This should always |
| // be first |
| LevelOff = -1000 |
| |
| // LevelEmergency is usually 0 but that is also the "zero" value |
| // for Go, which means whenever we do any lookup in string -> int |
| // map 0 is returned (not good). |
| LevelEmergency = -1 |
| |
| // LevelAlert means action must be taken immediately. |
| LevelAlert = 1 |
| |
| // LevelFatal means it should be corrected immediately, eg cannot connect to database. |
| LevelFatal = 2 |
| |
| // LevelCritical is alias for LevelFatal |
| LevelCritical = 2 |
| |
| // LevelError is a non-urgen failure to notify devlopers or admins |
| LevelError = 3 |
| |
| // LevelWarn indiates an error will occur if action is not taken, eg file system 85% full |
| LevelWarn = 4 |
| |
| // LevelNotice is normal but significant condition. |
| LevelNotice = 5 |
| |
| // LevelInfo is info level |
| LevelInfo = 6 |
| |
| // LevelDebug is debug level |
| LevelDebug = 7 |
| |
| // LevelTrace is trace level and displays file and line in terminal |
| LevelTrace = 10 |
| |
| // LevelAll is all levels |
| LevelAll = 1000 |
| ) |
| |
| // FormatHappy uses HappyDevFormatter |
| const FormatHappy = "happy" |
| |
| // FormatText uses TextFormatter |
| const FormatText = "text" |
| |
| // FormatJSON uses JSONFormatter |
| const FormatJSON = "JSON" |
| |
| // FormatEnv selects formatter based on LOGXI_FORMAT environment variable |
| const FormatEnv = "" |
| |
| // LevelMap maps int enums to string level. |
| var LevelMap = map[int]string{ |
| LevelFatal: "FTL", |
| LevelError: "ERR", |
| LevelWarn: "WRN", |
| LevelInfo: "INF", |
| LevelDebug: "DBG", |
| LevelTrace: "TRC", |
| } |
| |
| // LevelMap maps int enums to string level. |
| var LevelAtoi = map[string]int{ |
| "OFF": LevelOff, |
| "FTL": LevelFatal, |
| "ERR": LevelError, |
| "WRN": LevelWarn, |
| "INF": LevelInfo, |
| "DBG": LevelDebug, |
| "TRC": LevelTrace, |
| "ALL": LevelAll, |
| |
| "off": LevelOff, |
| "fatal": LevelFatal, |
| "error": LevelError, |
| "warn": LevelWarn, |
| "info": LevelInfo, |
| "debug": LevelDebug, |
| "trace": LevelTrace, |
| "all": LevelAll, |
| } |
| |
| // Logger is the interface for logging. |
| type Logger interface { |
| Trace(msg string, args ...interface{}) |
| Debug(msg string, args ...interface{}) |
| Info(msg string, args ...interface{}) |
| Warn(msg string, args ...interface{}) error |
| Error(msg string, args ...interface{}) error |
| Fatal(msg string, args ...interface{}) |
| Log(level int, msg string, args []interface{}) |
| |
| SetLevel(int) |
| IsTrace() bool |
| IsDebug() bool |
| IsInfo() bool |
| IsWarn() bool |
| // Error, Fatal not needed, those SHOULD always be logged |
| } |