mirror of
https://github.com/kemko/nomad.git
synced 2026-01-06 10:25:42 +03:00
cli Ui implementation that logs to a hclogger
This makes it so any messages output to the UI *after* the agent has started will be logged in json format correctly
This commit is contained in:
@@ -15,18 +15,19 @@ import (
|
||||
"syscall"
|
||||
"time"
|
||||
|
||||
metrics "github.com/armon/go-metrics"
|
||||
"github.com/armon/go-metrics"
|
||||
"github.com/armon/go-metrics/circonus"
|
||||
"github.com/armon/go-metrics/datadog"
|
||||
"github.com/armon/go-metrics/prometheus"
|
||||
"github.com/hashicorp/consul/lib"
|
||||
checkpoint "github.com/hashicorp/go-checkpoint"
|
||||
discover "github.com/hashicorp/go-discover"
|
||||
gsyslog "github.com/hashicorp/go-syslog"
|
||||
"github.com/hashicorp/go-checkpoint"
|
||||
"github.com/hashicorp/go-discover"
|
||||
"github.com/hashicorp/go-syslog"
|
||||
"github.com/hashicorp/logutils"
|
||||
"github.com/hashicorp/nomad/helper"
|
||||
flaghelper "github.com/hashicorp/nomad/helper/flag-helpers"
|
||||
gatedwriter "github.com/hashicorp/nomad/helper/gated-writer"
|
||||
"github.com/hashicorp/nomad/helper/flag-helpers"
|
||||
"github.com/hashicorp/nomad/helper/gated-writer"
|
||||
"github.com/hashicorp/nomad/helper/logging"
|
||||
"github.com/hashicorp/nomad/nomad/structs/config"
|
||||
"github.com/hashicorp/nomad/version"
|
||||
"github.com/mitchellh/cli"
|
||||
@@ -576,6 +577,12 @@ func (c *Command) Run(args []string) int {
|
||||
}
|
||||
defer c.agent.Shutdown()
|
||||
|
||||
// After the agent is created we have a logger, so swap out the implementation
|
||||
// of the UI if json logging is enabled
|
||||
if config.LogJson {
|
||||
c.Ui = &logging.HcLogUI{Log: c.agent.logger}
|
||||
}
|
||||
|
||||
// Shutdown the HTTP server at the end
|
||||
defer func() {
|
||||
if c.httpServer != nil {
|
||||
|
||||
38
helper/logging/logging.go
Normal file
38
helper/logging/logging.go
Normal file
@@ -0,0 +1,38 @@
|
||||
package logging
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"github.com/hashicorp/go-hclog"
|
||||
)
|
||||
|
||||
// HcLogUI is an implementation of Ui that takes a hclogger
|
||||
// and uses it to Log the output. It is intended for write only
|
||||
// use cases and the Ask/AskSecret methods are not implemented.
|
||||
type HcLogUI struct {
|
||||
Log hclog.Logger
|
||||
}
|
||||
|
||||
func (l *HcLogUI) Ask(query string) (string, error) {
|
||||
return "", fmt.Errorf("Ask is not supported in this implementation")
|
||||
}
|
||||
|
||||
func (l *HcLogUI) AskSecret(query string) (string, error) {
|
||||
return "", fmt.Errorf("AskSecret is not supported in this implementation")
|
||||
}
|
||||
|
||||
func (l *HcLogUI) Output(message string) {
|
||||
l.Log.Info(message)
|
||||
}
|
||||
|
||||
func (l *HcLogUI) Info(message string) {
|
||||
l.Log.Info(message)
|
||||
}
|
||||
|
||||
func (l *HcLogUI) Error(message string) {
|
||||
l.Log.Error(message)
|
||||
}
|
||||
|
||||
func (l *HcLogUI) Warn(message string) {
|
||||
l.Log.Warn(message)
|
||||
}
|
||||
Reference in New Issue
Block a user