| package log |
| |
| import ( |
| "context" |
| "os" |
| |
| "github.com/inconshreveable/log15" |
| ) |
| |
| // Type key is used as a key for context.Context values |
| type key int |
| |
| const ( |
| _ key = iota |
| loggerKey |
| ) |
| |
| // FromContext always returns a logger. If there is no logger in the context, it |
| // returns the root logger. It is not recommended for use and may be removed in |
| // the future. |
| func FromContext(ctx context.Context) log15.Logger { |
| if logger, ok := ctx.Value(loggerKey).(log15.Logger); ok { |
| return logger |
| } |
| |
| return log15.Root() |
| } |
| |
| // NewContext creates a new context containing the given logger. It is not |
| // recommended for use and may be removed in the future. |
| func NewContext(ctx context.Context, l log15.Logger) context.Context { |
| return context.WithValue(ctx, loggerKey, l) |
| } |
| |
| // Debug is a convenient alias for FromContext(ctx).Debug |
| func Debug(ctx context.Context, msg string, logCtx ...interface{}) { |
| FromContext(ctx).Debug(msg, logCtx...) |
| } |
| |
| // Info is a convenient alias for FromContext(ctx).Info |
| func Info(ctx context.Context, msg string, logCtx ...interface{}) { |
| FromContext(ctx).Info(msg, logCtx...) |
| } |
| |
| // Warn is a convenient alias for FromContext(ctx).Warn |
| func Warn(ctx context.Context, msg string, logCtx ...interface{}) { |
| FromContext(ctx).Warn(msg, logCtx...) |
| } |
| |
| // Error is a convenient alias for FromContext(ctx).Error |
| func Error(ctx context.Context, msg string, logCtx ...interface{}) { |
| FromContext(ctx).Error(msg, logCtx...) |
| } |
| |
| // Crit is a convenient alias for FromContext(ctx).Crit |
| func Crit(ctx context.Context, msg string, logCtx ...interface{}) { |
| FromContext(ctx).Crit(msg, logCtx...) |
| } |
| |
| // Fatal is equivalent to Crit() followed by a call to os.Exit(1). |
| func Fatal(ctx context.Context, msg string, logCtx ...interface{}) { |
| FromContext(ctx).Crit(msg, logCtx...) |
| os.Exit(1) |
| } |