Documentation ¶
Overview ¶
Package log implements logging analogous to the Google-internal C++ INFO/ERROR/V setup. It provides functions Info, Warning, Error, Fatal, plus formatting variants such as Infof. It also provides V-style logging and adaptions for use as a structured logging engine.
Basic examples:
log.Info("Prepare to repel boarders") log.Fatal("Initialization failed", err) // Log with context. log.Infoc(context, "client error: %s", err)
See the documentation for the V function for an explanation of these examples:
if log.V(2) { log.Info("Starting transaction...") }
Log output is buffered and written periodically using Flush. Programs should call Flush before exiting to guarantee all log output is written.
By default, all log statements write to files in a temporary directory. This package provides several flags that modify this behavior. These are provided via the pflags library; see InitFlags.
--logtostderr=true Logs are written to standard error instead of to files. --alsologtostderr=INFO Logs are written to standard error as well as to files. --log-dir="" Log files will be written to this directory instead of the default temporary directory. Other flags provide aids to debugging. --log-backtrace-at="" When set to a file and line number holding a logging statement, such as -log_backtrace_at=gopherflakes.go:234 a stack trace will be written to the Info log whenever execution hits that statement. (Unlike with --vmodule, the ".go" must be present.) --verbosity=0 Enable V-leveled logging at the specified level. --vmodule="" The syntax of the argument is a comma-separated list of pattern=N, where pattern is a literal file name (minus the ".go" suffix) or "glob" pattern and N is a V level. For instance, -vmodule=gopher*=3 sets the V level to 3 in all Go files whose names begin "gopher".
Index ¶
- Variables
- func DirSet() bool
- func DisableLogFileOutput()
- func EnableLogFileOutput(dir string)
- func Error(ctx context.Context, args ...interface{})
- func Errorf(ctx context.Context, format string, args ...interface{})
- func ErrorfDepth(ctx context.Context, depth int, format string, args ...interface{})
- func Fatal(ctx context.Context, args ...interface{})
- func FatalOnPanic()
- func Fatalf(ctx context.Context, format string, args ...interface{})
- func FatalfDepth(ctx context.Context, depth int, format string, args ...interface{})
- func Flush()
- func GetLogReader(filename string, restricted bool) (io.ReadCloser, error)
- func Info(ctx context.Context, args ...interface{})
- func Infof(ctx context.Context, format string, args ...interface{})
- func InfofDepth(ctx context.Context, depth int, format string, args ...interface{})
- func NewStdLogger(severity Severity) *stdLog.Logger
- func SetExitFunc(f func(int))
- func Trace(ctx context.Context, msg string)
- func Tracef(ctx context.Context, format string, args ...interface{})
- func V(level level) bool
- func VDepth(level level, depth int) bool
- func VTrace(level level, ctx context.Context, msg string)
- func VTracef(level level, ctx context.Context, format string, args ...interface{})
- func Warning(ctx context.Context, args ...interface{})
- func Warningf(ctx context.Context, format string, args ...interface{})
- func WarningfDepth(ctx context.Context, depth int, format string, args ...interface{})
- func WithLogTag(ctx context.Context, name string, value interface{}) context.Context
- func WithLogTagInt(ctx context.Context, name string, value int) context.Context
- func WithLogTagInt64(ctx context.Context, name string, value int64) context.Context
- func WithLogTagStr(ctx context.Context, name string, value string) context.Context
- type Entry
- type EntryDecoder
- type FileDetails
- type FileInfo
- type Severity
Constants ¶
This section is empty.
Variables ¶
var MaxSize uint64 = 1024 * 1024 * 10
MaxSize is the maximum size of a log file in bytes.
var Stats struct {
Info, Warning, Error outputStats
}
Stats tracks the number of lines of output and number of bytes per severity level. Values must be read with atomic.LoadInt64.
Functions ¶
func DirSet ¶
func DirSet() bool
DirSet returns true of the log directory has been changed from its default.
func DisableLogFileOutput ¶
func DisableLogFileOutput()
DisableLogFileOutput turns off logging. For unittesting only.
func EnableLogFileOutput ¶
func EnableLogFileOutput(dir string)
EnableLogFileOutput turns on logging using the specified directory. For unittesting only.
func Error ¶
Error logs to the ERROR, WARNING, and INFO logs. It extracts log tags from the context and logs them along with the given message. Arguments are handled in the manner of fmt.Print; a newline is appended.
func Errorf ¶
Errorf logs to the ERROR, WARNING, and INFO logs. It extracts log tags from the context and logs them along with the given message. Arguments are handled in the manner of fmt.Printf; a newline is appended.
func ErrorfDepth ¶
ErrorfDepth logs to the ERROR, WARNING, and INFO logs, offsetting the caller's stack frame by 'depth'. It extracts log tags from the context and logs them along with the given message. Arguments are handled in the manner of fmt.Printf; a newline is appended.
func Fatal ¶
Fatal logs to the INFO, WARNING, ERROR, and FATAL logs, including a stack trace of all running goroutines, then calls os.Exit(255). It extracts log tags from the context and logs them along with the given message. Arguments are handled in the manner of fmt.Print; a newline is appended.
func FatalOnPanic ¶
func FatalOnPanic()
FatalOnPanic recovers from a panic and exits the process with a Fatal log. This is useful for avoiding a panic being caught through a CGo exported function or preventing HTTP handlers from recovering panics and ignoring them.
func Fatalf ¶
Fatalf logs to the INFO, WARNING, ERROR, and FATAL logs, including a stack trace of all running goroutines, then calls os.Exit(255). It extracts log tags from the context and logs them along with the given message. Arguments are handled in the manner of fmt.Printf; a newline is appended.
func FatalfDepth ¶
FatalfDepth logs to the INFO, WARNING, ERROR, and FATAL logs (offsetting the caller's stack frame by 'depth'), including a stack trace of all running goroutines, then calls os.Exit(255). It extracts log tags from the context and logs them along with the given message. Arguments are handled in the manner of fmt.Printf; a newline is appended.
func GetLogReader ¶
func GetLogReader(filename string, restricted bool) (io.ReadCloser, error)
GetLogReader returns a reader for the specified filename. In restricted mode, the filename must be the base name of a file in this process's log directory (this is safe for cases when the filename comes from external sources, such as the admin UI via HTTP). In unrestricted mode any path is allowed, with the added feature that relative paths will be searched in both the current directory and this process's log directory.
func Info ¶
Info logs to the INFO log. It extracts log tags from the context and logs them along with the given message. Arguments are handled in the manner of fmt.Print; a newline is appended.
func Infof ¶
Infof logs to the INFO log. It extracts log tags from the context and logs them along with the given message. Arguments are handled in the manner of fmt.Printf; a newline is appended.
func InfofDepth ¶
InfofDepth logs to the INFO log, offsetting the caller's stack frame by 'depth'. It extracts log tags from the context and logs them along with the given message. Arguments are handled in the manner of fmt.Printf; a newline is appended.
func NewStdLogger ¶
NewStdLogger creates a *stdLog.Logger that forwards messages to the Google logs for the specified severity.
func SetExitFunc ¶
func SetExitFunc(f func(int))
SetExitFunc allows setting a function that will be called to exit the process when a Fatal message is generated.
func Trace ¶
Trace looks for an opentracing.Trace in the context and logs the given message to it on success.
func Tracef ¶
Tracef looks for an opentracing.Trace in the context and formats and logs the given message to it on success.
func V ¶
func V(level level) bool
V returns true if the logging verbosity is set to the specified level or higher.
func VTrace ¶
VTrace either logs a message to the log files (which also outputs to the active trace) or logs to the trace alone depending on whether the specified verbosity level is active.
func VTracef ¶
VTracef either logs a message to the log files (which also outputs to the active trace) or logs to the trace alone depending on whether the specified verbosity level is active.
func Warning ¶
Warning logs to the WARNING and INFO logs. It extracts log tags from the context and logs them along with the given message. Arguments are handled in the manner of fmt.Print; a newline is appended.
func Warningf ¶
Warningf logs to the WARNING and INFO logs. It extracts log tags from the context and logs them along with the given message. Arguments are handled in the manner of fmt.Printf; a newline is appended.
func WarningfDepth ¶
WarningfDepth logs to the WARNING and INFO logs, offsetting the caller's stack frame by 'depth'. It extracts log tags from the context and logs them along with the given message. Arguments are handled in the manner of fmt.Printf; a newline is appended.
func WithLogTag ¶
WithLogTag returns a context (derived from the given context) which when used with a logging function results in the given name and value being printed in the message. If the value is nil, just the name shows up.
func WithLogTagInt ¶
WithLogTagInt is a variant of WithLogTag that avoids the allocation associated with boxing the value in an interface{}.
func WithLogTagInt64 ¶
WithLogTagInt64 is a variant of WithLogTag that avoids the allocation associated with boxing the value in an interface{}.
Types ¶
type Entry ¶
type Entry struct { Severity int `json:"severity"` // Log message severity. Time int64 `json:"time"` // Time, measured in nanoseconds since the epoch. File string `json:"file"` // File which generated log statement. Line int `json:"line"` // Line in file which generated log statement. // TODO(pmattis): The json output should be called `message` as well. Need to // fix the UI. Message string `json:"format"` // Log message. }
Entry represents a cockroach structured log entry.
func FetchEntriesFromFiles ¶
func FetchEntriesFromFiles(severity Severity, startTimestamp, endTimestamp int64, maxEntries int, pattern *regexp.Regexp) ([]Entry, error)
FetchEntriesFromFiles fetches all available log entires on disk that match the log 'severity' (or worse) and are between the 'startTimestamp' and 'endTimestamp'. It will stop reading new files if the number of entries exceeds 'maxEntries'. Log entries are further filtered by the regexp 'pattern' if provided. The logs entries are returned in reverse chronological order.
type EntryDecoder ¶
type EntryDecoder struct {
// contains filtered or unexported fields
}
EntryDecoder reads successive encoded log entries from the input buffer. Each entry is preceded by a single big-ending uint32 describing the next entry's length.
func NewEntryDecoder ¶
func NewEntryDecoder(in io.Reader) *EntryDecoder
NewEntryDecoder creates a new instance of EntryDecoder.
func (*EntryDecoder) Decode ¶
func (d *EntryDecoder) Decode(entry *Entry) error
Decode decodes the next log entry into the provided protobuf message.
type FileDetails ¶
type FileDetails struct { Program string Host string UserName string Severity Severity Time time.Time PID uint }
A FileDetails holds all of the particulars that can be parsed by the name of a log file.
type FileInfo ¶
type FileInfo struct { Name string // base name SizeBytes int64 ModTimeNanos int64 // most recent mode time in unix nanos Details FileDetails }
A FileInfo holds the filename and size of a log file.
func ListLogFiles ¶
ListLogFiles returns a slice of FileInfo structs for each log file on the local node, in any of the configured log directories.
type Severity ¶
type Severity int32 // sync/atomic int32
Severity identifies the sort of log: info, warning etc. It also implements the flag.Value interface. The -stderrthreshold flag is of type Severity and should be modified only through the flag.Value interface. The values match the corresponding constants in C++.
These constants identify the log levels in order of increasing Severity. A message written to a high-Severity log file is also written to each lower-Severity log file.
func SeverityByName ¶
SeverityByName attempts to parse the passed in string into a severity. (i.e. ERROR, INFO). If it succeeds, the returned bool is set to true.