You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

57 lines
1.6 KiB

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)
}