37 Star 403 Fork 75

GVPrancher/rancher

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
logger.go 1.72 KB
一键复制 编辑 原始数据 按行查看 历史
Aiwantaozi 提交于 2018-04-24 08:20 . improve logging
package utils
import (
"io"
"sync"
"github.com/rancher/kontainer-engine/logstream"
"github.com/rancher/norman/condition"
"github.com/rancher/types/apis/management.cattle.io/v3"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)
func NewClusterLoggingLogger(obj *v3.ClusterLogging, cl v3.ClusterLoggingInterface, cond condition.Cond) (logstream.LoggerStream, io.Closer) {
logger := logstream.NewLogStream()
wg := sync.WaitGroup{}
wg.Add(1)
go func() {
defer wg.Done()
for event := range logger.Stream() {
if cond.GetMessage(obj) != event.Message {
if event.Error {
cond.False(obj)
}
cond.Message(obj, event.Message)
if newObj, err := cl.Update(obj); err == nil {
obj = newObj
} else {
newObj, err = cl.Get(obj.Name, metav1.GetOptions{})
if err == nil {
obj = newObj
}
}
}
}
}()
return logger, closerFunc(func() error {
logger.Close()
wg.Wait()
return nil
})
}
func NewProjectLoggingLogger(obj *v3.ProjectLogging, pl v3.ProjectLoggingInterface, cond condition.Cond) (logstream.LoggerStream, io.Closer) {
logger := logstream.NewLogStream()
wg := sync.WaitGroup{}
wg.Add(1)
go func() {
defer wg.Done()
for event := range logger.Stream() {
if cond.GetMessage(obj) != event.Message {
if event.Error {
cond.False(obj)
}
cond.Message(obj, event.Message)
if newObj, err := pl.Update(obj); err == nil {
obj = newObj
} else {
newObj, err = pl.Controller().Lister().Get(obj.Namespace, obj.Name)
if err == nil {
obj = newObj
}
}
}
}
}()
return logger, closerFunc(func() error {
logger.Close()
wg.Wait()
return nil
})
}
type closerFunc func() error
func (f closerFunc) Close() error { return f() }
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/rancher/rancher.git
git@gitee.com:rancher/rancher.git
rancher
rancher
rancher
v2.0.0-beta4-rc4

搜索帮助