telegraf/logger/default_logger.go

68 lines
1.3 KiB
Go
Raw Normal View History

package logger
import (
"errors"
"io"
"log"
"os"
"time"
2024-06-25 21:48:56 +08:00
"github.com/influxdata/telegraf"
"github.com/influxdata/telegraf/internal/rotate"
)
const (
LogTargetFile = "file"
LogTargetStderr = "stderr"
)
type defaultLogger struct {
logger *log.Logger
}
func (l *defaultLogger) Close() error {
writer := l.logger.Writer()
2024-06-25 21:48:56 +08:00
// Close the writer if possible and avoid closing stderr
if writer == os.Stderr {
return nil
}
if closer, ok := writer.(io.Closer); ok {
return closer.Close()
}
return errors.New("the underlying writer cannot be closed")
2024-06-25 21:48:56 +08:00
}
func (l *defaultLogger) SetOutput(w io.Writer) {
l.logger.SetOutput(w)
2024-06-25 21:48:56 +08:00
}
func (l *defaultLogger) Print(level telegraf.LogLevel, ts time.Time, prefix string, args ...interface{}) {
msg := append([]interface{}{ts.Format(time.RFC3339), " ", level.Indicator(), " ", prefix}, args...)
l.logger.Print(msg...)
2024-06-25 21:48:56 +08:00
}
func createDefaultLogger(cfg *Config) (sink, error) {
2024-06-25 21:48:56 +08:00
var writer io.Writer = os.Stderr
if cfg.LogTarget == "file" && cfg.Logfile != "" {
w, err := rotate.NewFileWriter(
cfg.Logfile,
cfg.RotationInterval,
cfg.RotationMaxSize,
cfg.RotationMaxArchives,
)
if err != nil {
return nil, err
}
writer = w
}
return &defaultLogger{logger: log.New(writer, "", 0)}, nil
}
func init() {
2024-06-25 21:48:56 +08:00
add("stderr", createDefaultLogger)
add("file", createDefaultLogger)
}