本文整理汇总了Golang中github.com/square/p2/pkg/logging.Logger类的典型用法代码示例。如果您正苦于以下问题:Golang Logger类的具体用法?Golang Logger怎么用?Golang Logger使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了Logger类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Golang代码示例。
示例1: shouldScheduleForNode
func (r *replication) shouldScheduleForNode(node types.NodeName, logger logging.Logger) bool {
nodeReality, err := r.queryReality(node)
if err != nil {
logger.WithError(err).Errorln("Could not read Reality for this node. Will proceed to schedule onto it.")
return true
}
if err == pods.NoCurrentManifest {
logger.Infoln("Nothing installed on this node yet.")
return true
}
if nodeReality != nil {
nodeRealitySHA, err := nodeReality.SHA()
if err != nil {
logger.WithError(err).Errorln("Unable to compute manifest SHA for this node. Attempting to schedule anyway")
return true
}
replicationRealitySHA, err := r.manifest.SHA()
if err != nil {
logger.WithError(err).Errorln("Unable to compute manifest SHA for this daemon set. Attempting to schedule anyway")
return true
}
if nodeRealitySHA == replicationRealitySHA {
logger.Info("Reality for this node matches this DS. No action required.")
return false
}
}
return true
}
开发者ID:petertseng,项目名称:p2,代码行数:31,代码来源:replication.go
示例2: NewReplicator
func NewReplicator(
manifest manifest.Manifest,
logger logging.Logger,
nodes []types.NodeName,
active int,
store kp.Store,
labeler Labeler,
health checker.ConsulHealthChecker,
threshold health.HealthState,
lockMessage string,
timeout time.Duration,
) (Replicator, error) {
if active < 1 {
return replicator{}, util.Errorf("Active must be >= 1, was %d", active)
}
if active > 50 {
logger.Infof("Number of concurrent updates (%v) is greater than 50, reducing to 50", active)
active = 50
}
return replicator{
manifest: manifest,
logger: logger,
nodes: nodes,
active: active,
store: store,
labeler: labeler,
health: health,
threshold: threshold,
lockMessage: lockMessage,
timeout: timeout,
}, nil
}
开发者ID:rudle,项目名称:p2,代码行数:32,代码来源:replicator.go
示例3: createHelloUUIDPod
func createHelloUUIDPod(dir string, port int, logger logging.Logger) (types.PodUniqueKey, error) {
signedManifestPath, err := writeHelloManifest(dir, fmt.Sprintf("hello-uuid-%d.yaml", port), port)
if err != nil {
return "", err
}
logger.Infoln("Scheduling uuid pod")
cmd := exec.Command("p2-schedule", "--uuid-pod", signedManifestPath)
stdout := bytes.Buffer{}
stderr := bytes.Buffer{}
cmd.Stdout, cmd.Stderr = &stdout, &stderr
err = cmd.Run()
if err != nil {
fmt.Println(stderr.String())
return "", err
}
var out schedule.Output
err = json.Unmarshal(stdout.Bytes(), &out)
if err != nil {
return "", util.Errorf("Scheduled uuid pod but couldn't parse uuid from p2-schedule output: %s", err)
}
logger.Infof("Scheduled uuid pod %s", out.PodUniqueKey)
return out.PodUniqueKey, nil
}
开发者ID:petertseng,项目名称:p2,代码行数:26,代码来源:check.go
示例4: watchStatus
func watchStatus(client client.Client, logger logging.Logger) {
key, err := types.ToPodUniqueKey(*podUniqueKey)
if err != nil {
logger.Fatalf("Could not parse passed pod unique key %q as uuid: %s", *podUniqueKey, err)
}
ctx, cancelFunc := context.WithCancel(context.Background())
defer cancelFunc()
outCh, err := client.WatchStatus(ctx, key, 1) // 1 so we wait for the key to exist
if err != nil {
logger.Fatal(err)
}
for i := 0; i < *numIterations; i++ {
val, ok := <-outCh
if !ok {
logger.Fatal("Channel closed unexpectedly")
}
if val.Error != nil {
logger.Fatal(val.Error)
}
bytes, err := json.Marshal(val)
if err != nil {
logger.Fatal(err)
}
fmt.Println(string(bytes))
}
}
开发者ID:petertseng,项目名称:p2,代码行数:31,代码来源:podstore.go
示例5: tryRunHooks
func (p *Preparer) tryRunHooks(hookType hooks.HookType, pod hooks.Pod, manifest manifest.Manifest, logger logging.Logger) {
err := p.hooks.RunHookType(hookType, pod, manifest)
if err != nil {
logger.WithErrorAndFields(err, logrus.Fields{
"hooks": hookType}).Warnln("Could not run hooks")
}
}
开发者ID:drcapulet,项目名称:p2,代码行数:7,代码来源:orchestrate.go
示例6: MonitorPodHealth
// MonitorPodHealth is meant to be a long running go routine.
// MonitorPodHealth reads from a consul store to determine which
// services should be running on the host. MonitorPodHealth
// runs a CheckHealth routine to monitor the health of each
// service and kills routines for services that should no
// longer be running.
func MonitorPodHealth(config *preparer.PreparerConfig, logger *logging.Logger, shutdownCh chan struct{}) {
var store kp.Store
consul := config.ConsulAddress
node := config.NodeName
pods := []PodWatch{}
authtoken, err := preparer.LoadConsulToken(config.ConsulTokenPath)
if err != nil {
logger.WithField("inner_err", err).Warningln("Could not load consul token")
}
store = kp.NewConsulStore(kp.Options{
Address: consul,
HTTPS: false,
Token: authtoken,
Client: net.NewHeaderClient(nil, http.DefaultTransport),
})
pods = updateHealthMonitors(store, pods, node, logger)
for {
select {
case <-time.After(POLL_KV_FOR_PODS):
// check if pods have been added or removed
// starts monitor routine for new pods
// kills monitor routine for removed pods
pods = updateHealthMonitors(store, pods, node, logger)
case <-shutdownCh:
return
}
}
}
开发者ID:robertabbott,项目名称:p2,代码行数:36,代码来源:health.go
示例7: NewUpdate
// Create a new Update. The kp.Store, rcstore.Store, labels.Applicator and
// scheduler.Scheduler arguments should be the same as those of the RCs themselves. The
// session must be valid for the lifetime of the Update; maintaining this is the
// responsibility of the caller.
func NewUpdate(
f fields.Update,
kps kp.Store,
rcs rcstore.Store,
hcheck checker.ConsulHealthChecker,
labeler rc.Labeler,
sched scheduler.Scheduler,
logger logging.Logger,
session kp.Session,
alerter alerting.Alerter,
) Update {
if alerter == nil {
alerter = alerting.NewNop()
}
logger = logger.SubLogger(logrus.Fields{
"desired_replicas": f.DesiredReplicas,
"minimum_replicas": f.MinimumReplicas,
})
return &update{
Update: f,
kps: kps,
rcs: rcs,
hcheck: hcheck,
labeler: labeler,
sched: sched,
logger: logger,
session: session,
alerter: alerter,
}
}
开发者ID:rudle,项目名称:p2,代码行数:35,代码来源:run_update.go
示例8: verifyLegacyPod
func verifyLegacyPod(errCh chan error, tempDir string, config *preparer.PreparerConfig, services []string, logger logging.Logger) {
defer close(errCh)
// Schedule a "legacy" hello pod using a replication controller
rcID, err := createHelloReplicationController(tempDir)
if err != nil {
errCh <- fmt.Errorf("Could not create hello pod / rc: %s", err)
return
}
logger.Infof("Created RC #%s for hello\n", rcID)
err = waitForPodLabeledWithRC(klabels.Everything().Add(rc.RCIDLabel, klabels.EqualsOperator, []string{rcID.String()}), rcID)
if err != nil {
errCh <- fmt.Errorf("Failed waiting for pods labeled with the given RC: %v", err)
return
}
err = verifyHelloRunning("", logger)
if err != nil {
errCh <- fmt.Errorf("Couldn't get hello running: %s", err)
return
}
err = verifyHealthChecks(config, services)
if err != nil {
errCh <- fmt.Errorf("Could not get health check info from consul: %s", err)
return
}
}
开发者ID:petertseng,项目名称:p2,代码行数:26,代码来源:check.go
示例9: AuthorizeApp
func (p FixedKeyringPolicy) AuthorizeApp(manifest Manifest, logger logging.Logger) error {
plaintext, signature := manifest.SignatureData()
if signature == nil {
return Error{util.Errorf("received unsigned manifest (expected signature)"), nil}
}
signer, err := checkDetachedSignature(p.Keyring, plaintext, signature)
if err != nil {
return err
}
signerId := fmt.Sprintf("%X", signer.PrimaryKey.Fingerprint)
logger.WithField("signer_key", signerId).Debugln("resolved manifest signature")
// Check authorization for this package to be deployed by this
// key, if configured.
if len(p.AuthorizedDeployers[manifest.ID()]) > 0 {
found := false
for _, deployerId := range p.AuthorizedDeployers[manifest.ID()] {
if deployerId == signerId {
found = true
break
}
}
if !found {
return Error{
util.Errorf("manifest signer not authorized to deploy " + manifest.ID()),
map[string]interface{}{"signer_key": signerId},
}
}
}
return nil
}
开发者ID:tomzhang,项目名称:p2,代码行数:33,代码来源:policy.go
示例10: handleSessionExpiry
func (dsf *Farm) handleSessionExpiry(dsFields ds_fields.DaemonSet, dsLogger logging.Logger, err error) {
dsLogger.WithFields(logrus.Fields{
"ID": dsFields.ID,
"Name": dsFields.Name,
"NodeSelector": dsFields.NodeSelector.String(),
"PodID": dsFields.PodID,
}).WithError(err).Errorln("Got error while locking daemon set in ds farm - session may be expired")
}
开发者ID:drcapulet,项目名称:p2,代码行数:8,代码来源:farm.go
示例11: updateHealthMonitors
func updateHealthMonitors(store kp.Store, watchedPods []PodWatch, node string, logger *logging.Logger) []PodWatch {
path := kp.RealityPath(node)
reality, _, err := store.ListPods(path)
if err != nil {
logger.WithField("inner_err", err).Warningln("failed to get pods from reality store")
}
return updatePods(watchedPods, reality, logger, store, node)
}
开发者ID:robertabbott,项目名称:p2,代码行数:9,代码来源:health.go
示例12: tryRunHooks
func (p *Preparer) tryRunHooks(hookType hooks.HookType, pod hooks.Pod, manifest *pods.Manifest, logger logging.Logger) {
err := p.hooks.RunHookType(hookType, pod, manifest)
if err != nil {
logger.WithFields(logrus.Fields{
"err": err,
"hooks": hookType,
}).Warnln("Could not run hooks")
}
}
开发者ID:robertabbott,项目名称:p2,代码行数:9,代码来源:orchestrate.go
示例13: addHooks
func addHooks(preparerConfig *PreparerConfig, logger logging.Logger) {
for _, dest := range preparerConfig.ExtraLogDestinations {
logger.WithFields(logrus.Fields{
"type": dest.Type,
"path": dest.Path,
}).Infoln("Adding log destination")
logger.AddHook(dest.Type, dest.Path)
}
}
开发者ID:tomzhang,项目名称:p2,代码行数:9,代码来源:setup.go
示例14: waitForTermination
func waitForTermination(logger logging.Logger, quitMainUpdate, quitHookUpdate chan struct{}, quitMonitorPodHealth chan struct{}) {
signalCh := make(chan os.Signal, 2)
signal.Notify(signalCh, syscall.SIGTERM, os.Interrupt)
received := <-signalCh
logger.WithField("signal", received.String()).Infoln("Stopping work")
quitHookUpdate <- struct{}{}
quitMainUpdate <- struct{}{}
quitMonitorPodHealth <- struct{}{}
<-quitMainUpdate // acknowledgement
}
开发者ID:robertabbott,项目名称:p2,代码行数:10,代码来源:main.go
示例15: handlePods
// no return value, no output channels. This should do everything it needs to do
// without outside intervention (other than being signalled to quit)
func (p *Preparer) handlePods(podChan <-chan ManifestPair, quit <-chan struct{}) {
// install new launchables
var nextLaunch ManifestPair
// used to track if we have work to do (i.e. pod manifest came through channel
// and we have yet to operate on it)
working := false
var manifestLogger logging.Logger
for {
select {
case <-quit:
return
case nextLaunch = <-podChan:
var sha string
if nextLaunch.Intent != nil {
sha, _ = nextLaunch.Intent.SHA()
} else {
sha, _ = nextLaunch.Reality.SHA()
}
manifestLogger = p.Logger.SubLogger(logrus.Fields{
"pod": nextLaunch.ID,
"sha": sha,
})
manifestLogger.NoFields().Debugln("New manifest received")
if nextLaunch.Intent == nil {
// if intent=nil then reality!=nil and we need to delete the pod
// therefore we must set working=true here
working = true
} else {
// non-nil intent manifests need to be authorized first
working = p.authorize(nextLaunch.Intent, manifestLogger)
if !working {
p.tryRunHooks(hooks.AFTER_AUTH_FAIL, pods.NewPod(nextLaunch.ID, pods.PodPath(p.podRoot, nextLaunch.ID)), nextLaunch.Intent, manifestLogger)
}
}
case <-time.After(1 * time.Second):
if working {
pod := pods.NewPod(nextLaunch.ID, pods.PodPath(p.podRoot, nextLaunch.ID))
// TODO better solution: force the preparer to have a 0s default timeout, prevent KILLs
if pod.Id == POD_ID {
pod.DefaultTimeout = time.Duration(0)
}
ok := p.resolvePair(nextLaunch, pod, manifestLogger)
if ok {
nextLaunch = ManifestPair{}
working = false
}
}
}
}
}
开发者ID:tomzhang,项目名称:p2,代码行数:56,代码来源:orchestrate.go
示例16: RetryOrQuit
// retries a given function until it returns a nil error or the quit channel is
// closed. returns true if it exited in the former case, false in the latter.
// errors are sent to the given logger with the given string as the message.
func RetryOrQuit(f func() error, quit <-chan struct{}, logger logging.Logger, errtext string) bool {
for err := f(); err != nil; err = f() {
logger.WithError(err).Errorln(errtext)
select {
case <-quit:
return false
case <-time.After(1 * time.Second):
// unblock the select and loop again
}
}
return true
}
开发者ID:tomzhang,项目名称:p2,代码行数:15,代码来源:run_update.go
示例17: authorize
// check if a manifest satisfies the authorization requirement of this preparer
func (p *Preparer) authorize(manifest manifest.Manifest, logger logging.Logger) bool {
err := p.authPolicy.AuthorizeApp(manifest, logger)
if err != nil {
if err, ok := err.(auth.Error); ok {
logger.WithFields(err.Fields).Errorln(err)
} else {
logger.NoFields().Errorln(err)
}
return false
}
return true
}
开发者ID:drcapulet,项目名称:p2,代码行数:13,代码来源:orchestrate.go
示例18: resolvePair
func (p *Preparer) resolvePair(pair ManifestPair, pod Pod, logger logging.Logger) bool {
// do not remove the logger argument, it's not the same as p.Logger
var oldSHA, newSHA string
if pair.Reality != nil {
oldSHA, _ = pair.Reality.SHA()
}
if pair.Intent != nil {
newSHA, _ = pair.Intent.SHA()
}
if oldSHA == "" {
logger.NoFields().Infoln("manifest is new, will update")
return p.installAndLaunchPod(pair, pod, logger)
}
if newSHA == "" {
logger.NoFields().Infoln("manifest was deleted from intent, will remove")
return p.stopAndUninstallPod(pair, pod, logger)
}
if oldSHA == newSHA {
logger.NoFields().Debugln("manifest is unchanged, no action required")
return true
}
logger.WithField("old_sha", oldSHA).Infoln("manifest SHA has changed, will update")
return p.installAndLaunchPod(pair, pod, logger)
}
开发者ID:drcapulet,项目名称:p2,代码行数:29,代码来源:orchestrate.go
示例19: sendHealthUpdate
// Helper to processHealthUpdater()
func sendHealthUpdate(
logger logging.Logger,
w chan<- writeResult,
health *WatchResult,
doThrottle bool,
sender func() error,
) {
if err := sender(); err != nil {
logger.WithError(err).Error("error writing health")
// Try not to overwhelm Consul
time.Sleep(time.Duration(*HealthRetryTimeSec) * time.Second)
w <- writeResult{nil, false, doThrottle}
} else {
w <- writeResult{health, true, doThrottle}
}
}
开发者ID:drcapulet,项目名称:p2,代码行数:17,代码来源:healthmanager.go
示例20: verifyUUIDPod
func verifyUUIDPod(errCh chan error, tempDir string, logger logging.Logger) {
defer close(errCh)
// Schedule a "uuid" hello pod on a different port
podUniqueKey, err := createHelloUUIDPod(tempDir, 43771, logger)
if err != nil {
errCh <- fmt.Errorf("Could not schedule UUID hello pod: %s", err)
return
}
logger.Infoln("p2-schedule'd another hello instance as a uuid pod running on port 43771")
err = verifyHelloRunning(podUniqueKey, logger)
if err != nil {
errCh <- fmt.Errorf("Couldn't get hello running as a uuid pod: %s", err)
return
}
}
开发者ID:petertseng,项目名称:p2,代码行数:17,代码来源:check.go
注:本文中的github.com/square/p2/pkg/logging.Logger类示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论