|
|
- package log
-
- import (
- "io"
- "sync"
- )
-
- const (
- // LogFormatPlain defines a logging format used for human-readable text-based
- // logging that is not structured. Typically, this format is used for development
- // and testing purposes.
- LogFormatPlain string = "plain"
-
- // LogFormatText defines a logging format used for human-readable text-based
- // logging that is not structured. Typically, this format is used for development
- // and testing purposes.
- LogFormatText string = "text"
-
- // LogFormatJSON defines a logging format for structured JSON-based logging
- // that is typically used in production environments, which can be sent to
- // logging facilities that support complex log parsing and querying.
- LogFormatJSON string = "json"
-
- // Supported loging levels
- LogLevelDebug = "debug"
- LogLevelInfo = "info"
- LogLevelWarn = "warn"
- LogLevelError = "error"
- )
-
- // Logger defines a generic logging interface compatible with Tendermint.
- type Logger interface {
- Debug(msg string, keyVals ...interface{})
- Info(msg string, keyVals ...interface{})
- Error(msg string, keyVals ...interface{})
-
- With(keyVals ...interface{}) Logger
- }
-
- // syncWriter wraps an io.Writer that can be used in a Logger that is safe for
- // concurrent use by multiple goroutines.
- type syncWriter struct {
- sync.Mutex
- io.Writer
- }
-
- func newSyncWriter(w io.Writer) io.Writer {
- return &syncWriter{Writer: w}
- }
-
- // Write writes p to the underlying io.Writer. If another write is already in
- // progress, the calling goroutine blocks until the syncWriter is available.
- func (w *syncWriter) Write(p []byte) (int, error) {
- w.Lock()
- defer w.Unlock()
- return w.Writer.Write(p)
- }
|