package hclog
import "github.com/hashicorp/go-hclog"
Index ¶
- Constants
- Variables
- type CapturedStacktrace
- type Format
- type Level
- type Logger
- func Default() Logger
- func L() Logger
- func New(opts *LoggerOptions) Logger
- func NewNullLogger() Logger
- type LoggerOptions
- type StandardLoggerOptions
Constants ¶
const TimeFormat = "2006-01-02T15:04:05.000Z0700"
The time format to use for logging. This is a version of RFC3339 that contains millisecond precision
Variables ¶
var ( // The options used to create the Default logger. These are // read only when the Default logger is created, so set them // as soon as the process starts. DefaultOptions = &LoggerOptions{ Level: DefaultLevel, Output: DefaultOutput, } )
Types ¶
type CapturedStacktrace ¶
type CapturedStacktrace string
A stacktrace gathered by a previous call to log.Stacktrace. If passed to a logging function, the stacktrace will be appended.
func Stacktrace ¶
func Stacktrace() CapturedStacktrace
Gather a stacktrace of the current goroutine and return it to be passed to a logging function.
type Format ¶
type Format []interface{}
When processing a value of this type, the logger automatically treats the first argument as a Printf formatting string and passes the rest as the values to be formatted. For example: L.Info(Fmt{"%d beans/day", beans}). This is a simple convience type for when formatting is required.
func Fmt ¶
Fmt returns a Format type. This is a convience function for creating a Format type.
type Level ¶
type Level int32
const ( // This is a special level used to indicate that no level has been // set and allow for a default to be used. NoLevel Level = 0 // The most verbose level. Intended to be used for the tracing of actions // in code, such as function enters/exits, etc. Trace Level = 1 // For programmer lowlevel analysis. Debug Level = 2 // For information about steady state operations. Info Level = 3 // For information about rare but handled events. Warn Level = 4 // For information about unrecoverable events. Error Level = 5 )
func LevelFromString ¶
LevelFromString returns a Level type for the named log level, or "NoLevel" if the level string is invalid. This facilitates setting the log level via config or environment variable by name in a predictable way.
type Logger ¶
type Logger interface { // Args are alternating key, val pairs // keys must be strings // vals can be any type, but display is implementation specific // Emit a message and key/value pairs at the TRACE level Trace(msg string, args ...interface{}) // Emit a message and key/value pairs at the DEBUG level Debug(msg string, args ...interface{}) // Emit a message and key/value pairs at the INFO level Info(msg string, args ...interface{}) // Emit a message and key/value pairs at the WARN level Warn(msg string, args ...interface{}) // Emit a message and key/value pairs at the ERROR level Error(msg string, args ...interface{}) // Indicate if TRACE logs would be emitted. This and the other Is* guards // are used to elide expensive logging code based on the current level. IsTrace() bool // Indicate if DEBUG logs would be emitted. This and the other Is* guards IsDebug() bool // Indicate if INFO logs would be emitted. This and the other Is* guards IsInfo() bool // Indicate if WARN logs would be emitted. This and the other Is* guards IsWarn() bool // Indicate if ERROR logs would be emitted. This and the other Is* guards IsError() bool // Creates a sublogger that will always have the given key/value pairs With(args ...interface{}) Logger // Create a logger that will prepend the name string on the front of all messages. // If the logger already has a name, the new value will be appended to the current // name. That way, a major subsystem can use this to decorate all it's own logs // without losing context. Named(name string) Logger // Create a logger that will prepend the name string on the front of all messages. // This sets the name of the logger to the value directly, unlike Named which honor // the current name as well. ResetNamed(name string) Logger // Updates the level. This should affect all sub-loggers as well. If an // implementation cannot update the level on the fly, it should no-op. SetLevel(level Level) // Return a value that conforms to the stdlib log.Logger interface StandardLogger(opts *StandardLoggerOptions) *log.Logger // Return a value that conforms to io.Writer, which can be passed into log.SetOutput() StandardWriter(opts *StandardLoggerOptions) io.Writer }
The main Logger interface. All code should code against this interface only.
func Default ¶
func Default() Logger
Return a logger that is held globally. This can be a good starting place, and then you can use .With() and .Name() to create sub-loggers to be used in more specific contexts.
func L ¶
func L() Logger
A short alias for Default()
func New ¶
func New(opts *LoggerOptions) Logger
Given the options (nil for defaults), create a new Logger
func NewNullLogger ¶
func NewNullLogger() Logger
NewNullLogger instantiates a Logger for which all calls will succeed without doing anything. Useful for testing purposes.
type LoggerOptions ¶
type LoggerOptions struct { // Name of the subsystem to prefix logs with Name string // The threshold for the logger. Anything less severe is supressed Level Level // Where to write the logs to. Defaults to os.Stderr if nil Output io.Writer // An optional mutex pointer in case Output is shared Mutex *sync.Mutex // Control if the output should be in JSON. JSONFormat bool // Include file and line information in each log line IncludeLocation bool // The time format to use instead of the default TimeFormat string }
type StandardLoggerOptions ¶
type StandardLoggerOptions struct { // Indicate that some minimal parsing should be done on strings to try // and detect their level and re-emit them. // This supports the strings like [ERROR], [ERR] [TRACE], [WARN], [INFO], // [DEBUG] and strip it off before reapplying it. InferLevels bool }
Source Files ¶
global.go int.go log.go nulllogger.go stacktrace.go stdlog.go
Directories ¶
Path | Synopsis |
---|---|
hclogvet | Vet is a simple checker for static errors in Go source code. |
- Version
- v0.7.0
- Published
- Feb 14, 2019
- Platform
- darwin/amd64
- Imports
- 17 packages
- Last checked
- now –
Tools for package owners.