mirror of
https://github.com/ceph/ceph-csi.git
synced 2024-10-19 05:39:51 +00:00
91774fc936
Uses github.com/libopenstorage/secrets to communicate with Vault. This removes the need for maintaining our own limited Vault APIs. By adding the new dependency, several other packages got updated in the process. Unused indirect dependencies have been removed from go.mod. Signed-off-by: Niels de Vos <ndevos@redhat.com>
83 lines
1.8 KiB
Go
83 lines
1.8 KiB
Go
package hclog
|
|
|
|
import (
|
|
"bytes"
|
|
"io"
|
|
)
|
|
|
|
type writer struct {
|
|
b bytes.Buffer
|
|
w io.Writer
|
|
color ColorOption
|
|
}
|
|
|
|
func newWriter(w io.Writer, color ColorOption) *writer {
|
|
return &writer{w: w, color: color}
|
|
}
|
|
|
|
func (w *writer) Flush(level Level) (err error) {
|
|
var unwritten = w.b.Bytes()
|
|
|
|
if w.color != ColorOff {
|
|
color := _levelToColor[level]
|
|
unwritten = []byte(color.Sprintf("%s", unwritten))
|
|
}
|
|
|
|
if lw, ok := w.w.(LevelWriter); ok {
|
|
_, err = lw.LevelWrite(level, unwritten)
|
|
} else {
|
|
_, err = w.w.Write(unwritten)
|
|
}
|
|
w.b.Reset()
|
|
return err
|
|
}
|
|
|
|
func (w *writer) Write(p []byte) (int, error) {
|
|
return w.b.Write(p)
|
|
}
|
|
|
|
func (w *writer) WriteByte(c byte) error {
|
|
return w.b.WriteByte(c)
|
|
}
|
|
|
|
func (w *writer) WriteString(s string) (int, error) {
|
|
return w.b.WriteString(s)
|
|
}
|
|
|
|
// LevelWriter is the interface that wraps the LevelWrite method.
|
|
type LevelWriter interface {
|
|
LevelWrite(level Level, p []byte) (n int, err error)
|
|
}
|
|
|
|
// LeveledWriter writes all log messages to the standard writer,
|
|
// except for log levels that are defined in the overrides map.
|
|
type LeveledWriter struct {
|
|
standard io.Writer
|
|
overrides map[Level]io.Writer
|
|
}
|
|
|
|
// NewLeveledWriter returns an initialized LeveledWriter.
|
|
//
|
|
// standard will be used as the default writer for all log levels,
|
|
// except for log levels that are defined in the overrides map.
|
|
func NewLeveledWriter(standard io.Writer, overrides map[Level]io.Writer) *LeveledWriter {
|
|
return &LeveledWriter{
|
|
standard: standard,
|
|
overrides: overrides,
|
|
}
|
|
}
|
|
|
|
// Write implements io.Writer.
|
|
func (lw *LeveledWriter) Write(p []byte) (int, error) {
|
|
return lw.standard.Write(p)
|
|
}
|
|
|
|
// LevelWrite implements LevelWriter.
|
|
func (lw *LeveledWriter) LevelWrite(level Level, p []byte) (int, error) {
|
|
w, ok := lw.overrides[level]
|
|
if !ok {
|
|
w = lw.standard
|
|
}
|
|
return w.Write(p)
|
|
}
|