Documentation
¶
Overview ¶
Package cmd implements cmd helpers.
This provides helpers on top of `github.com/urfave/cli`.
Example usage:
var c *cli.Context // Get this from your action log, err := cmd.NewLogger(c) if err != nil { // Handle error. } stats, err := cmd.NewStatter(c, log) if err != nil { // Handle error. }
Index ¶
- Constants
- Variables
- func NewLogger(c *cli.Context) (*logger.Logger, error)
- func NewStatter(c *cli.Context, log *logger.Logger) (*statter.Statter, error)
- func NewTracer(c *cli.Context, log *logger.Logger, resAttributes ...attribute.KeyValue) (*trace.TracerProvider, error)
- func Split(slice []string, sep string) ([][2]string, error)
- type Flags
Examples ¶
Constants ¶
const ( FlagLogFormat = "log.format" FlagLogLevel = "log.level" FlagLogCtx = "log.ctx" )
Log flag constants declared for CLI use.
const ( FlagStatsDSN = "stats.dsn" FlagStatsInterval = "stats.interval" FlagStatsPrefix = "stats.prefix" FlagStatsTags = "stats.tags" )
Stats flag constants declared for CLI use.
const ( FlagTracingExporter = "tracing.exporter" FlagTracingEndpoint = "tracing.endpoint" FlagTracingRatio = "tracing.ratio" )
Tracing flag constants declared for CLI use.
const FlagPort = "port"
FlagPort contains the flag name for a server port.
Variables ¶
var LogFlags = Flags{ &cli.StringFlag{ Name: FlagLogFormat, Usage: "Specify the format of logs. Supported formats: 'logfmt', 'json', 'console'", EnvVars: []string{"LOG_FORMAT"}, }, &cli.StringFlag{ Name: FlagLogLevel, Value: "info", Usage: "Specify the log level. e.g. 'debug', 'info', 'error'.", EnvVars: []string{"LOG_LEVEL"}, }, &cli.StringSliceFlag{ Name: FlagLogCtx, Usage: "A list of context field appended to every log. Format: key=value.", EnvVars: []string{"LOG_CTX"}, }, }
LogFlags are flags that configure logging.
var MonitoringFlags = Flags{}.Merge(LogFlags, StatsFlags, TracingFlags)
MonitoringFlags are flags that configure logging, stats and tracing.
var ServerFlags = Flags{ &cli.StringFlag{ Name: FlagPort, Value: "80", Usage: "Port for HTTP server to listen on", EnvVars: []string{"PORT"}, }, }
ServerFlags are flags that configure a server. Deprecated: There is no standardisation around this. It is preferred to make your own flag.
var StatsFlags = Flags{ &cli.StringFlag{ Name: FlagStatsDSN, Usage: "The DSN of a stats backend.", EnvVars: []string{"STATS_DSN"}, }, &cli.DurationFlag{ Name: FlagStatsInterval, Usage: "The frequency at which the stats are reported.", Value: time.Second, EnvVars: []string{"STATS_INTERVAL"}, }, &cli.StringFlag{ Name: FlagStatsPrefix, Usage: "The prefix of the measurements names.", EnvVars: []string{"STATS_PREFIX"}, }, &cli.StringSliceFlag{ Name: FlagStatsTags, Usage: "A list of tags appended to every measurement. Format: key=value.", EnvVars: []string{"STATS_TAGS"}, }, }
StatsFlags are flags that configure stats.
var TracingFlags = Flags{ &cli.StringFlag{ Name: FlagTracingExporter, Usage: "The tracing backend. Supported: 'jaeger', 'zipkin'.", EnvVars: []string{"TRACING_EXPORTER"}, }, &cli.StringFlag{ Name: FlagTracingEndpoint, Usage: "The tracing backend endpoint.", EnvVars: []string{"TRACING_ENDPOINT"}, }, &cli.Float64Flag{ Name: FlagTracingRatio, Usage: "The ratio between 0 and 1 of sample traces to take.", Value: 0.5, EnvVars: []string{"TRACING_RATIO"}, }, }
TracingFlags are flags that configure tracing.
Functions ¶
func NewLogger ¶
func NewLogger(c *cli.Context) (*logger.Logger, error)
NewLogger returns a logger configured from the cli.
Example ¶
var c *cli.Context // Get this from your action log, err := cmd.NewLogger(c) if err != nil { // Handle error. return } _ = log
Output:
func NewStatter ¶
func NewStatter(c *cli.Context, log *logger.Logger) (*statter.Statter, error)
NewStatter returns a statter configured from the cli.
Example ¶
var c *cli.Context // Get this from your action log, err := cmd.NewLogger(c) if err != nil { // Handle error. return } stats, err := cmd.NewStatter(c, log) if err != nil { // Handle error. return } defer stats.Close() _ = stats
Output:
func NewTracer ¶
func NewTracer(c *cli.Context, log *logger.Logger, resAttributes ...attribute.KeyValue) (*trace.TracerProvider, error)
NewTracer returns a tracer configures from the cli.
Example ¶
var c *cli.Context // Get this from your action log, err := cmd.NewLogger(c) if err != nil { // Handle error. return } tracer, err := cmd.NewTracer(c, log, semconv.ServiceNameKey.String("my-service"), semconv.ServiceVersionKey.String("1.0.0"), ) if err != nil { // Handle error. return } defer tracer.Shutdown(context.Background()) _ = tracer
Output: