1 Star 0 Fork 0

tianmaotalk/promtail_embedded

Create your Gitee Account
Explore and code with more than 14 million developers,Free private repositories !:)
Sign up
文件
Clone or Download
logger.go 1.85 KB
Copy Edit Raw Blame History
zhimin.tian authored 2023-09-08 10:23 +08:00 . init
package client
import (
"context"
"fmt"
"gitee.com/tianmaotalk/promtail_embedded/pkg/omclient/promtail/api"
"gitee.com/tianmaotalk/promtail_embedded/pkg/omclient/promtail/flagext"
"os"
"runtime"
"sync"
"text/tabwriter"
"github.com/fatih/color"
"github.com/go-kit/log"
"github.com/prometheus/client_golang/prometheus"
"gopkg.in/yaml.v2"
)
var (
yellow = color.New(color.FgYellow)
blue = color.New(color.FgBlue)
)
func init() {
if runtime.GOOS == "windows" {
yellow.DisableColor()
blue.DisableColor()
}
}
type logger struct {
*tabwriter.Writer
sync.Mutex
entries chan api.Entry
once sync.Once
}
// NewLogger creates a new client logger that logs entries instead of sending them.
func NewLogger(reg prometheus.Registerer, log log.Logger, externalLabels flagext.LabelSet, cfgs ...Config) (Client, error) {
// make sure the clients config is valid
c, err := NewMulti(context.TODO(), reg, log, externalLabels, cfgs...)
if err != nil {
return nil, err
}
c.Stop()
fmt.Println(yellow.Sprint("Clients configured:"))
for _, cfg := range cfgs {
yaml, err := yaml.Marshal(cfg)
if err != nil {
return nil, err
}
fmt.Println("----------------------")
fmt.Println(string(yaml))
}
entries := make(chan api.Entry)
l := &logger{
Writer: tabwriter.NewWriter(os.Stdout, 0, 8, 0, '\t', 0),
entries: entries,
}
go l.run()
return l, nil
}
func (l *logger) Stop() {
l.once.Do(func() { close(l.entries) })
}
func (l *logger) Chan() chan<- api.Entry {
return l.entries
}
func (l *logger) run() {
for e := range l.entries {
fmt.Fprint(l.Writer, blue.Sprint(e.Timestamp.Format("2006-01-02T15:04:05.999999999-0700")))
fmt.Fprint(l.Writer, "\t")
fmt.Fprint(l.Writer, yellow.Sprint(e.Labels.String()))
fmt.Fprint(l.Writer, "\t")
fmt.Fprint(l.Writer, e.Line)
fmt.Fprint(l.Writer, "\n")
l.Flush()
}
}
func (l *logger) StopNow() { l.Stop() }
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/tianmaotalk/promtail_embedded.git
git@gitee.com:tianmaotalk/promtail_embedded.git
tianmaotalk
promtail_embedded
promtail_embedded
10aecdb7d823

Search