logging

package
v1.0.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 11, 2019 License: MIT Imports: 34 Imported by: 0

Documentation

Overview

Package logging provides a framework for working with typed, structured log systems. Specifically, we target an ELK stack that enforces a whole-Elasticsearch schema for log entries. The target system drops messages if they do not conform to the configured schema.

The design of this package is premised on using the Go type system to tighten the iteration cycle around working with our ELK stack. Specifically, we define explicit log message structs, and use constructor functions in order to control exactly the fields that have to be collected. Ideally, on-the-spot log messages will be guided by their constructors to provide the correct fields, so that we're shielded from the dead-letter queue at the time of logging.

As a compliment to this process, we also allow for log messages to report metrics, and to output console messages for a human operator.

By implementing any combination of the interfaces LogMessage, ConsoleMessage and MetricsMessage single log message may emit: structured logs to the ELK stack (LogMessage) textual logs to stderr (ConsoleMessage), or metrics messages to graphite carbon endpoints (MetricsMessage) Each message must implement at least one of those interfaces.

The philosphy here is that one kind of reporting output will often compliment another, and since these outputs are predicated on the implementation of interfaces (c.f. LogMessage, MetricsMessage and ConsoleMessage), it's easy to add new reporting to a particular point of instrumentation in the code.

If an intended message doesn't actually implement any of the required interfaces (e.g. by missing out implementing DefaultLevel) this package will create a new "silent message" log entry detailing as much as possible about the non-message struct. The same facility is used if the message causes a panic while reporting - the theory is that logging should never panic the app (even though it's very easy for it to do so.) It is recommended to create alerts from you ELK stack when "silent message log entries are created."

Entry points to understanding this package are the Deliver function, and the LogMessage, MetricsMessage and ConsoleMessage interfaces.

An example log message might look like this:

type exampleMessage struct {
  CallerInfo
  Level
  myField string
}

func ReportExample(field string, sink LogSink) {
  msg := newExampleMessage(field)
  msg.CallerInfo.ExcludeMe() // this filters out ReportExample from the logged call stack
  Deliver(msg, sink) // this is the important part
}

func newExampleMessage(field string) *exampleMessage {
  return &exampleMessage{
    CallerInfo: GetCallerInfo(NotHere()), // this formula captures the call point, while excluding the constructor
    Level: DebugLevel,
    myField: field,
  }
}

// func (msg *exampleMessage) DefaultLevel() Level { ... }
// we could define this method, or let the embedded Level handle it.

func (msg *exampleMessage) Message() {
  return msg.myField
}

func (msg *exampleMessage) EachField(f FieldReportFn) {
  f("@loglov3-otl", "example-message") // a requirement of our local ELK
  msg.CallerInfo.EachField(f) // so that the CallerInfo can register its fields
  f("my-field", msg.myField)
}

Final note: this package is in a state of transition. When Sous was starting, we bowed to indecision and simply adopted the stdlib "log" package, which turned out to be insufficient to our needs with respect to the ELK stack, and somewhat complicated to deal with in terms of leveled output. We're in the process of removing our dependencies on the "old ways," but in the meantime the interface is somewhat confusing, since there's two conflicted underlying approaches.

Index

Constants

This section is empty.

Variables

View Source
var HTTPVariableFields = []string{
	"resource-family",
	"incoming",
	"method",
	"status",
	"duration",
	"body-size",
	"response-size",
	"url",
	"url-hostname",
	"url-pathname",
	"url-querystring",
}

HTTPVariableFields are the fields expected to be in HTTP Message

View Source
var IntervalVariableFields = []string{"started-at", "finished-at", "duration"}

IntervalVariableFields are the fields generated by Intervals when they're closed. Use this var with AssertMessageFields when your message includes an Interval like

AssertMessageFields(t, msg, IntervalVariableFields, map[string]interface{}{...})

(for incomplete intervals, just add "started-at" to the variableFields.)

View Source
var StandardVariableFields = []string{
	"@timestamp",
	"call-stack-trace",
	"call-stack-file",
	"call-stack-line-number",

	"thread-name",
}

StandardVariableFields are the fields that are expected to be in (almost) every Sous log message, but that will be difficult to predict. Use this var with AssertMessageFields as a starter for the variableFields argument.

For example:

AssertMessageFields(t, msg, StandardVariableFields, map[string]interface{}{...})

Functions

func AssertConfiguration

func AssertConfiguration(ls *LogSet, graphiteURL string) error

AssertConfiguration is a testing method - it allows us to test that certain configuration values are as expected.

func AssertMessageFieldlist

func AssertMessageFieldlist(t *testing.T, msgs []EachFielder, variableFields []string, fixedFields map[string]interface{})

AssertMessageFieldlist is a testing function. It works like the legacy AssertMessageFields, but accepts a list of EachFielder, more in line with the new logging interface.

func AssertMessageFields

func AssertMessageFields(t *testing.T, msg EachFielder, variableFields []string, fixedFields map[string]interface{})

AssertMessageFields is a testing function - it receives an eachFielder and confirms that it:

  • generates no duplicate fields
  • generates fields with the names in variableFields, and ignores their values
  • generates fields with the names and values in fixedFields
  • generates an @loglov3-otl field

Additionally, if the test passes, a rough proposal of an "OTL" schema definition will be written to a tempfile.

See also the StandardVariableFields and IntervalVariableFields convenience variables.

func AssertReport

func AssertReport(t *testing.T, log func(LogSink)) (LogSinkController, []EachFielder)

AssertReport calls its 'log' argument with a log sink, extracts a LogMessage and returns the controller for the logsink and the message passed. In general, prefer AssertReportFields, but if you need to further test e.g. metrics delivery, calling AssertReport and then AssertMessageFields can be a good way to do that.

func AssertReportFields

func AssertReportFields(t *testing.T, log func(LogSink), variableFields []string, fixedFields map[string]interface{})

AssertReportFields calls it's log argument, and then asserts that a LogMessage reported in that function conforms to the two fields arguments passed. Use it to test "reportXXX" functions, since it tests for panics in the reporting function as well.

func CastFN

func CastFN(fns []FieldName) []string

xxx this is stopgap so that we can use []FieldName.

func ConsoleAndMessage

func ConsoleAndMessage(m interface{}) consoleMessage

ConsoleAndMessage wraps a string such that it will be both a console output and the primary message of a log entry.

func ConsoleError

func ConsoleError(msg ConsoleMessage) string

ConsoleError receives a ConsoleMessage and returns the string as it would be printed to the console. This can be used to implement the error interface on ConsoleMessages

func Debug

func Debug(l LogSink, fs ...interface{})

Debug sends a generic-otl Debug log message.

func DebugConsole

func DebugConsole(l LogSink, msg string, fs ...interface{})

DebugConsole sends a generic-otl Debug log message, and echoes it to the console, wrapping a string message.

func DebugMsg

func DebugMsg(l LogSink, msg string, fs ...interface{})

DebugMsg sends a generic-otl Debug log message, wrapping a string message.

func Deliver

func Deliver(logger LogSink, messages ...interface{})

Deliver is the core of the logging messages design.

The message argument may implement any of LogMessage, MetricsMessage or ConsoleMessage, and the data contained in the message will be dispatched appropriately.

Furthermore, messages that don't implement any of those interfaces, or which panic when operated upon, themselves generate a well-tested message so that they can be caught and fixed.

The upshot is that messages can be Delivered on the spot and later determine what facilities are appropriate.

func Info

func Info(l LogSink, fs ...interface{})

Info sends a generic-otl Info log message.

func InfoConsole

func InfoConsole(l LogSink, msg string, fs ...interface{})

InfoConsole sends a generic-otl Info log message, and echoes it to the console, wrapping a string message.

func InfoMsg

func InfoMsg(l LogSink, msg string, fs ...interface{})

InfoMsg sends a generic-otl Info log message, wrapping a string message.

func NewGenericMsg

func NewGenericMsg(lvl Level, msg string, fields map[string]interface{}, console bool) *genericMsg

NewGenericMsg creates an event out of a map of fields. There are no metrics associated with the event - for that you need to define a specialized message type.

func NewLogSinkSpy

func NewLogSinkSpy(def ...bool) (LogSink, LogSinkController)

NewLogSinkSpy returns a spy/controller pair for testing purposes. (see LogSet for a general purpose implementation of LogSink)

func ReportConsoleMsg

func ReportConsoleMsg(logger LogSink, lvl Level, msg string)

ReportConsoleMsg will set Console flag, so message is also outputed to console

func ReportError

func ReportError(sink LogSink, err error, console ...bool)

ReportError is used to report an error via structured logging. If you need more information than "an error occurred", consider using a different structured message.

func ReportErrorConsole

func ReportErrorConsole(sink LogSink, err error)

ReportErrorConsole is used to report an error via structured logging. If you need more information than "an error occurred", consider using a different structured message.

func ReportMsg

func ReportMsg(logger LogSink, lvl Level, msg string, console ...bool)

ReportMsg is an appropriate for most off-the-cuff logging. It probably calls to be replaced with something more specialized, though.

func RetrieveMetaData

func RetrieveMetaData(f func()) (name string, uid string)

RetrieveMetaData used to help retrieve more info for logging about a func

func Warn

func Warn(l LogSink, fs ...interface{})

Warn sends a generic-otl Warn log message.

func WarnConsole

func WarnConsole(l LogSink, msg string, fs ...interface{})

WarnConsole sends a generic-otl Warn log message, and echoes it to the console, wrapping a string message.

func WarnMsg

func WarnMsg(l LogSink, msg string, fs ...interface{})

WarnMsg sends a generic-otl Warn log message, wrapping a string message.

Types

type CPUResourceField

type CPUResourceField float64

CPUResourceField is a specialization of float64 to handle details of ELK.

func (CPUResourceField) EachField

func (f CPUResourceField) EachField(fn FieldReportFn)

EachField implements EachFielder on CPUResourceField.

func (CPUResourceField) MarshalJSON

func (f CPUResourceField) MarshalJSON() ([]byte, error)

MarshalJSON implements json.Marshaller on CPUResourceField.

type CallerInfo

type CallerInfo struct {
	// contains filtered or unexported fields
}

CallerInfo describes the source of a log message. It should be included in almost every message, to capture information about when and where the message was created.

func GetCallerInfo

func GetCallerInfo(excluding ...Excluder) CallerInfo

GetCallerInfo captures a CallerInfo based on where it's called. It's very common to call this like:

GetCallerInfo(NotHere())

which excludes the function that actually calls GetCallerInfo (usually a message constructor) from the logged call stack.

func (CallerInfo) EachField

func (info CallerInfo) EachField(f FieldReportFn)

EachField calls f repeatedly with name/value pairs that capture what CallerInfo knows about the message.

func (*CallerInfo) ExcludeMe

func (info *CallerInfo) ExcludeMe()

ExcludeMe can be used to exclude other handler functions from the reportable stack example: msg.CallerInfo.ExcludeMe()

func (*CallerInfo) ExcludePathPattern

func (info *CallerInfo) ExcludePathPattern(pat string)

Exclude path is used to exclude paths that contain a pattern

type Config

type Config struct {
	Basic struct {
		Level          string `env:"SOUS_LOGGING_LEVEL"`
		DisableConsole bool
		ExtraConsole   bool `env:"SOUS_EXTRA_CONSOLE"`
	}
	Kafka struct {
		Enabled      bool
		DefaultLevel string `env:"SOUS_KAFKA_LOG_LEVEL"`
		Topic        string `env:"SOUS_KAFKA_TOPIC"`
		Brokers      []string
		BrokerList   string `env:"SOUS_KAFKA_BROKERS"`
	}
	Graphite struct {
		Enabled bool
		Server  string `env:"SOUS_GRAPHITE_SERVER"`
	}
}

Config captures outside configuration for a root LogSet

func (Config) Equal

func (cfg Config) Equal(other Config) bool

Equal tests the equality of two configs.

func (Config) GetBasicLevel

func (cfg Config) GetBasicLevel() Level

GetBasicLevel gets the basic level of logging for this configuration. that is, the level of messages that would be logged that should be emitted to the console this is separate from messages that are designed for human consumption

func (Config) Validate

func (cfg Config) Validate() error

Validate asserts the validity of the logging configuration

type ConsoleMessage

type ConsoleMessage interface {
	WriteToConsole(console io.Writer)
}

A ConsoleMessage has messages to report to a local human operator (c.f. Deliver)

type Counter

type Counter interface {
	Clear()
	Inc(int64)
	Dec(int64)
}

Counter is a write-only interface for an integer counter

type EachFielder

type EachFielder interface {
	EachField(fn FieldReportFn)
}

A EachFielder provides EachField - which calls its argument for each field it wants to submit for logging.

func KV

func KV(n FieldName, v interface{}) EachFielder

KV creates a single-entry EachFielder with the FieldName as the name.

type Excluder

type Excluder interface {
	// contains filtered or unexported methods
}

Excluder excludes a frame from being reported.

func NotHere

func NotHere() Excluder

NotHere returns the frame of its caller to exclude from search as the source of a log entry

type FieldName

type FieldName string
const (
	AbExperiment                                       FieldName = "ab-experiment"
	AbVariant                                          FieldName = "ab-variant"
	AcceptLanguage                                     FieldName = "accept-language"
	AcntrespStatus                                     FieldName = "acntresp-status"
	Action                                             FieldName = "action"
	ActionName                                         FieldName = "action-name"
	AddressLocationFallback                            FieldName = "address-location-fallback"
	AddressMatches                                     FieldName = "address-matches"
	Alpha                                              FieldName = "alpha"
	AnnounceDelete                                     FieldName = "announce-delete"
	AnnounceEnvironment                                FieldName = "announce-environment"
	AnnounceFeature                                    FieldName = "announce-feature"
	AnnounceId                                         FieldName = "announce-id"
	AnnounceIndex                                      FieldName = "announce-index"
	AnnounceMetadata                                   FieldName = "announce-metadata"
	AnnounceServiceType                                FieldName = "announce-service-type"
	AnnounceServiceUri                                 FieldName = "announce-service-uri"
	AnnounceStatic                                     FieldName = "announce-static"
	AnnounceTime                                       FieldName = "announce-time"
	AnonIdAction                                       FieldName = "anon-id-action"
	AnonymousId                                        FieldName = "anonymous-id"
	ApiErrorMessage                                    FieldName = "api-error-message"
	ApiName                                            FieldName = "api-name"
	ApiStatusCode                                      FieldName = "api-status-code"
	ApiVersion                                         FieldName = "api-version"
	ApplicationAction                                  FieldName = "application-action"
	ApplicationController                              FieldName = "application-controller"
	ApplicationLogType                                 FieldName = "application-log-type"
	ApplicationMethodName                              FieldName = "application-method-name"
	ApplicationTags                                    FieldName = "application-tags"
	ApplicationVersion                                 FieldName = "application-version"
	Args                                               FieldName = "args"
	Arguments                                          FieldName = "arguments"
	Audit                                              FieldName = "audit"
	AuthenticationProvider                             FieldName = "authentication-provider"
	AuthenticationSuccess                              FieldName = "authentication-success"
	Backend                                            FieldName = "backend"
	BackendHttpCode                                    FieldName = "backend-http-code"
	BatchId                                            FieldName = "batch-id"
	BeBillid                                           FieldName = "be-billid"
	BeBillrunid                                        FieldName = "be-billrunid"
	BeDbid                                             FieldName = "be-dbid"
	BeEosJobid                                         FieldName = "be-eos-jobid"
	BeFsid                                             FieldName = "be-fsid"
	Beta                                               FieldName = "beta"
	BeWebid                                            FieldName = "be-webid"
	BfErrCode                                          FieldName = "bf-err-code"
	BfErrDetails                                       FieldName = "bf-err-details"
	Bindings                                           FieldName = "bindings"
	Body                                               FieldName = "body"
	BodySize                                           FieldName = "body-size"
	BookingCovers                                      FieldName = "booking-covers"
	BookingPreferredDatetime                           FieldName = "booking-preferred-datetime"
	CacheDurationMs                                    FieldName = "cache-duration-ms"
	CacheErrorValue                                    FieldName = "cache-error-value"
	CacheServerUrl                                     FieldName = "cache-server-url"
	CallStackCode                                      FieldName = "call-stack-code"
	CallStackFile                                      FieldName = "call-stack-file"
	CallStackLineNumber                                FieldName = "call-stack-line-number"
	CallStackMessage                                   FieldName = "call-stack-message"
	CallStackTrace                                     FieldName = "call-stack-trace"
	CallStackType                                      FieldName = "call-stack-type"
	CaseNumber                                         FieldName = "case-number"
	CityMatches                                        FieldName = "city-matches"
	ClientIp                                           FieldName = "client-ip"
	ClientSide                                         FieldName = "client-side"
	Collection                                         FieldName = "collection"
	Command                                            FieldName = "command"
	ComponentId                                        FieldName = "component-id"
	ConfigSearchMicros                                 FieldName = "config-search-micros"
	ConfirmationNumber                                 FieldName = "confirmation-number"
	ConnectAlertsV2Culture                             FieldName = "connect-alerts-v2-culture"
	ConnectAlertsV2Email                               FieldName = "connect-alerts-v2-email"
	ConnectAlertsV2Flag                                FieldName = "connect-alerts-v2-flag"
	ConnectAlertsV2HasSameDayAction                    FieldName = "connect-alerts-v2-has-same-day-action"
	ConnectAlertsV2ReservationGpid                     FieldName = "connect-alerts-v2-reservation-gpid"
	ConnectAlertsV2ReservationLanguageCode             FieldName = "connect-alerts-v2-reservation-language-code"
	ConnectAlertsV2ReservationPartySize                FieldName = "connect-alerts-v2-reservation-party-size"
	ConnectAlertsV2ReservationRegion                   FieldName = "connect-alerts-v2-reservation-region"
	ConnectAlertsV2ReservationState                    FieldName = "connect-alerts-v2-reservation-state"
	ConnectAlertsV2SubscriptionId                      FieldName = "connect-alerts-v2-subscription-id"
	ConnectAlertsV2TemplateName                        FieldName = "connect-alerts-v2-template-name"
	ConnectAlertsV2Timezone                            FieldName = "connect-alerts-v2-timezone"
	ConnectAlertsV2Window                              FieldName = "connect-alerts-v2-window"
	ConnectionAction                                   FieldName = "connection-action"
	ConnectionDirection                                FieldName = "connection-direction"
	ConnectionDuration                                 FieldName = "connection-duration"
	ConnectionId                                       FieldName = "connection-id"
	ConnectionInterface                                FieldName = "connection-interface"
	ConnectionProtocolId                               FieldName = "connection-protocol-id"
	ConnectionReason                                   FieldName = "connection-reason"
	ConnectionReceived                                 FieldName = "connection-received"
	ConnectionSent                                     FieldName = "connection-sent"
	ConnectionService                                  FieldName = "connection-service"
	ConnectorName                                      FieldName = "connector-name"
	ConnectorPort                                      FieldName = "connector-port"
	Context                                            FieldName = "context"
	ContextId                                          FieldName = "context-id"
	ControllerName                                     FieldName = "controller-name"
	CountryCode                                        FieldName = "country-code"
	CreatedAt                                          FieldName = "created-at"
	CuisineId                                          FieldName = "cuisine-id"
	CuisineMatches                                     FieldName = "cuisine-matches"
	CustomMessageDate                                  FieldName = "custom-message-date"
	CustomMessageLanguage                              FieldName = "custom-message-language"
	CustomMessageType                                  FieldName = "custom-message-type"
	DeliverAfter                                       FieldName = "deliver-after"
	DeliverBefore                                      FieldName = "deliver-before"
	DeliveredAt                                        FieldName = "delivered-at"
	DeliverLatencyMs                                   FieldName = "deliver-latency-ms"
	DeployId                                           FieldName = "deploy-id"
	DeployStatus                                       FieldName = "deploy-status"
	DeserializeTime                                    FieldName = "deserialize-time"
	DestinationDiscoveryName                           FieldName = "destination-discovery-name"
	Destination                                        FieldName = "destination"
	Device                                             FieldName = "device"
	DevnotifBundleId                                   FieldName = "devnotif-bundle-id"
	DevnotifDeviceToken                                FieldName = "devnotif-device-token"
	DevnotifNotification                               FieldName = "devnotif-notification"
	DevnotifPayload                                    FieldName = "devnotif-payload"
	DevnotifPushProvider                               FieldName = "devnotif-push-provider"
	DinerschoiceListType                               FieldName = "dinerschoice-list-type"
	DinerschoiceMostBookedList                         FieldName = "dinerschoice-most-booked-list"
	DinerschoiceTagName                                FieldName = "dinerschoice-tag-name"
	DispatcherActionErrors                             FieldName = "dispatcher-action-errors"
	DispatcherActionResults                            FieldName = "dispatcher-action-results"
	DispatcherErrorOccured                             FieldName = "dispatcher-error-occured"
	DispatcherEventType                                FieldName = "dispatcher-event-type"
	DispatcherReminderType                             FieldName = "dispatcher-reminder-type"
	DispatcherRuleErrors                               FieldName = "dispatcher-rule-errors"
	DispatcherRulesResults                             FieldName = "dispatcher-rules-results"
	DocsCountAfterSync                                 FieldName = "docs-count-after-sync"
	DocsCountBeforeSync                                FieldName = "docs-count-before-sync"
	DocsDeletes                                        FieldName = "docs-deletes"
	DocsInserts                                        FieldName = "docs-inserts"
	DocsUpdates                                        FieldName = "docs-updates"
	Domain                                             FieldName = "domain"
	DstInterface                                       FieldName = "dst-interface"
	DstIp                                              FieldName = "dst-ip"
	DstMappedIp                                        FieldName = "dst-mapped-ip"
	DstMappedPort                                      FieldName = "dst-mapped-port"
	DstPort                                            FieldName = "dst-port"
	Duration                                           FieldName = "duration"
	DurationMs                                         FieldName = "duration-ms"
	EdaContextId                                       FieldName = "eda-context-id"
	EdaMessageId                                       FieldName = "eda-message-id"
	EndpointName                                       FieldName = "endpoint-name"
	EndpointVersion                                    FieldName = "endpoint-version"
	EndpointVersionSource                              FieldName = "endpoint-version-source"
	ErbHostName                                        FieldName = "erb-host-name"
	ErrorCount                                         FieldName = "error-count"
	Error                                              FieldName = "error"
	ErrorId                                            FieldName = "error-id"
	ErrorMessage                                       FieldName = "error-message"
	Errornum                                           FieldName = "errornum"
	ErrorSeverity                                      FieldName = "error-severity"
	ErrorType                                          FieldName = "error-type"
	ExceptionClassName                                 FieldName = "exception-class-name"
	ExceptionContext                                   FieldName = "exception-context"
	ExceptionDetails                                   FieldName = "exception-details"
	Exception                                          FieldName = "exception"
	ExceptionMessage                                   FieldName = "exception-message"
	ExceptionMethod                                    FieldName = "exception-method"
	ExceptionSource                                    FieldName = "exception-source"
	ExceptionStacktrace                                FieldName = "exception-stacktrace"
	ExceptionTarget                                    FieldName = "exception-target"
	ExceptionType                                      FieldName = "exception-type"
	ExecutionTimeInMilliseconds                        FieldName = "execution-time-in-milliseconds"
	ExitCode                                           FieldName = "exit-code"
	Experiments                                        FieldName = "experiments"
	F5MonitorFrom                                      FieldName = "f5-monitor-from"
	F5MonitorName                                      FieldName = "f5-monitor-name"
	F5Pool                                             FieldName = "f5-pool"
	F5PoolMember                                       FieldName = "f5-pool-member"
	F5Profile                                          FieldName = "f5-profile"
	F5Rule                                             FieldName = "f5-rule"
	F5StateChange                                      FieldName = "f5-state-change"
	F5Vip                                              FieldName = "f5-vip"
	F5WideIp                                           FieldName = "f5-wide-ip"
	Facility2Label                                     FieldName = "facility2-label"
	FacilityLabel                                      FieldName = "facility-label"
	FailingRepository                                  FieldName = "failing-repository"
	FailingRepositoryOwner                             FieldName = "failing-repository-owner"
	FailingService                                     FieldName = "failing-service"
	FeatureGroupName                                   FieldName = "feature-group-name"
	FeatureName                                        FieldName = "feature-name"
	File                                               FieldName = "file"
	FilterCluster                                      FieldName = "filter-cluster"
	FilterFlavor                                       FieldName = "filter-flavor"
	FilterOffset                                       FieldName = "filter-offset"
	FilterRepo                                         FieldName = "filter-repo"
	FilterRevision                                     FieldName = "filter-revision"
	FilterTag                                          FieldName = "filter-tag"
	FinishedAt                                         FieldName = "finished-at"
	FmnActiveThreads                                   FieldName = "fmn-active-threads"
	FmnAvailPortThreads                                FieldName = "fmn-avail-port-threads"
	FmnAvailWorkerThreads                              FieldName = "fmn-avail-worker-threads"
	FmnDeliveryDuration                                FieldName = "fmn-delivery-duration"
	FmnDisposition                                     FieldName = "fmn-disposition"
	FmnPmemory                                         FieldName = "fmn-pmemory"
	FmnQueueNewCapacity                                FieldName = "fmn-queue-new-capacity"
	FmnQueueOldCapacity                                FieldName = "fmn-queue-old-capacity"
	FmnQueueSize                                       FieldName = "fmn-queue-size"
	FmnQueueTimerThreads                               FieldName = "fmn-queue-timer-threads"
	FmnReminderId                                      FieldName = "fmn-reminder-id"
	FmnVmemory                                         FieldName = "fmn-vmemory"
	FormatVersion                                      FieldName = "format-version"
	ForwardedRequest                                   FieldName = "forwarded-request"
	FreetextMetroId                                    FieldName = "freetext-metro-id"
	FreetextNeighborhoodIds                            FieldName = "freetext-neighborhood-ids"
	FreetextRegionIds                                  FieldName = "freetext-region-ids"
	GcbeAbandonedTaskAttemptCount                      FieldName = "gcbe-abandoned-task-attempt-count"
	GcbeActivationRequestSent                          FieldName = "gcbe-activation-request-sent"
	GcbeActivationStartTime                            FieldName = "gcbe-activation-start-time"
	GcbeActiveThreadCount                              FieldName = "gcbe-active-thread-count"
	GcbeAdjustedEndTime                                FieldName = "gcbe-adjusted-end-time"
	GcbeAdjustedStartTime                              FieldName = "gcbe-adjusted-start-time"
	GcbeAdvancedBooking                                FieldName = "gcbe-advanced-booking"
	GcbeAlgorithmName                                  FieldName = "gcbe-algorithm-name"
	GcbeApiVersion                                     FieldName = "gcbe-api-version"
	GcbeAssumedDoneCount                               FieldName = "gcbe-assumed-done-count"
	GcbeAssumedSeatedCount                             FieldName = "gcbe-assumed-seated-count"
	GcbeAuditRequired                                  FieldName = "gcbe-audit-required"
	GcbeAuditStatus                                    FieldName = "gcbe-audit-status"
	GcbeAuditTrigger                                   FieldName = "gcbe-audit-trigger"
	GcbeAuthClient                                     FieldName = "gcbe-auth-client"
	GcbeAuthUser                                       FieldName = "gcbe-auth-user"
	GcbeAvailabilityMatches                            FieldName = "gcbe-availability-matches"
	GcbeAvailabilitySnapshotSequenceRestartedEnforced  FieldName = "gcbe-availability-snapshot-sequence-restarted-enforced"
	GcbeAvailabilitySnapshotSequenceRestarted          FieldName = "gcbe-availability-snapshot-sequence-restarted"
	GcbeAvailabilitySnapshotTaskCount                  FieldName = "gcbe-availability-snapshot-task-count"
	GcbeAvailSearchMultiRid                            FieldName = "gcbe-avail-search-multi-rid"
	GcbeAverageDurationMs                              FieldName = "gcbe-average-duration-ms"
	GcbeAvstoreTimesAvailable                          FieldName = "gcbe-avstore-times-available"
	GcbeAwaitingTime                                   FieldName = "gcbe-awaiting-time"
	GcbeBackwardMinutes                                FieldName = "gcbe-backward-minutes"
	GcbeBatchTimeMs                                    FieldName = "gcbe-batch-time-ms"
	GcbeBusinessDayChanged                             FieldName = "gcbe-business-day-changed"
	GcbeBusyAuditBackgroundThreadCount                 FieldName = "gcbe-busy-audit-background-thread-count"
	GcbeCacheInitBatch                                 FieldName = "gcbe-cache-init-batch"
	GcbeCacheInitBatchSize                             FieldName = "gcbe-cache-init-batch-size"
	GcbeCallNumber                                     FieldName = "gcbe-call-number"
	GcbeCallTimeMs                                     FieldName = "gcbe-call-time-ms"
	GcbeChangeReason                                   FieldName = "gcbe-change-reason"
	GcbeChanges                                        FieldName = "gcbe-changes"
	GcbeCheckavailRequestCount                         FieldName = "gcbe-checkavail-request-count"
	GcbeCheckavailSearchDateTime                       FieldName = "gcbe-checkavail-search-date-time"
	GcbeCheckavailTaskCount                            FieldName = "gcbe-checkavail-task-count"
	GcbeClientId                                       FieldName = "gcbe-client-id"
	GcbeClientType                                     FieldName = "gcbe-client-type"
	GcbeClientVersion                                  FieldName = "gcbe-client-version"
	GcbeCompletedWorkItemCount                         FieldName = "gcbe-completed-work-item-count"
	GcbeConfirmationNumber                             FieldName = "gcbe-confirmation-number"
	GcbeConsumerTimesAvailable                         FieldName = "gcbe-consumer-times-available"
	GcbeCount                                          FieldName = "gcbe-count"
	GcbeCountryCode                                    FieldName = "gcbe-country-code"
	GcbeCursorDelta                                    FieldName = "gcbe-cursor-delta"
	GcbeCursorEnd                                      FieldName = "gcbe-cursor-end"
	GcbeCursor                                         FieldName = "gcbe-cursor"
	GcbeCursorStart                                    FieldName = "gcbe-cursor-start"
	GcbeDataAfter                                      FieldName = "gcbe-data-after"
	GcbeDatabaseName                                   FieldName = "gcbe-database-name"
	GcbeDataBefore                                     FieldName = "gcbe-data-before"
	GcbeData                                           FieldName = "gcbe-data"
	GcbeDateTime                                       FieldName = "gcbe-date-time"
	GcbeDayOfWeek                                      FieldName = "gcbe-day-of-week"
	GcbeDaysInAdvance                                  FieldName = "gcbe-days-in-advance"
	GcbeEndDate                                        FieldName = "gcbe-end-date"
	GcbeEndpoint                                       FieldName = "gcbe-endpoint"
	GcbeEndTime                                        FieldName = "gcbe-end-time"
	GcbeEnforceSequenceRestartedPercentage             FieldName = "gcbe-enforce-sequence-restarted-percentage"
	GcbeEtlCheckIntervalInMs                           FieldName = "gcbe-etl-check-interval-in-ms"
	GcbeEtlProcessingBatchSize                         FieldName = "gcbe-etl-processing-batch-size"
	GcbeEtlProcessingTriggerIntervalInSeconds          FieldName = "gcbe-etl-processing-trigger-interval-in-seconds"
	GcbeExactTime                                      FieldName = "gcbe-exact-time"
	GcbeExpiresUtc                                     FieldName = "gcbe-expires-utc"
	GcbeFirstName                                      FieldName = "gcbe-first-name"
	GcbeForwardDays                                    FieldName = "gcbe-forward-days"
	GcbeForwardMinutes                                 FieldName = "gcbe-forward-minutes"
	GcbeFromTime                                       FieldName = "gcbe-from-time"
	GcbeFullAuditBackgroundThreadCount                 FieldName = "gcbe-full-audit-background-thread-count"
	GcbeFullTaskCount                                  FieldName = "gcbe-full-task-count"
	GcbeFutureReservationCount                         FieldName = "gcbe-future-reservation-count"
	GcbeGuestEmail                                     FieldName = "gcbe-guest-email"
	GcbeGuestId                                        FieldName = "gcbe-guest-id"
	GcbeGuestJson                                      FieldName = "gcbe-guest-json"
	GcbeHeaders                                        FieldName = "gcbe-headers"
	GcbeIdleAuditBackgroundThreadCount                 FieldName = "gcbe-idle-audit-background-thread-count"
	GcbeImportBatchErrorCount                          FieldName = "gcbe-import-batch-error-count"
	GcbeImportBatchSize                                FieldName = "gcbe-import-batch-size"
	GcbeImportOrigin                                   FieldName = "gcbe-import-origin"
	GcbeInventoryType                                  FieldName = "gcbe-inventory-type"
	GcbeIsAvailabilityCached                           FieldName = "gcbe-is-availability-cached"
	GcbeIsCurrentTablePreserved                        FieldName = "gcbe-is-current-table-preserved"
	GcbeIsDistributedCacheActive                       FieldName = "gcbe-is-distributed-cache-active"
	GcbeIsDistributedCacheAvailable                    FieldName = "gcbe-is-distributed-cache-available"
	GcbeIsWaitlistAvailable                            FieldName = "gcbe-is-waitlist-available"
	GcbeLastName                                       FieldName = "gcbe-last-name"
	GcbeMaxBatchSize                                   FieldName = "gcbe-max-batch-size"
	GcbeMetricName                                     FieldName = "gcbe-metric-name"
	GcbeMetricValue                                    FieldName = "gcbe-metric-value"
	GcbeMetricValueSecondary                           FieldName = "gcbe-metric-value-secondary"
	GcbeMetricValueTertiary                            FieldName = "gcbe-metric-value-tertiary"
	GcbeMismatchTimes                                  FieldName = "gcbe-mismatch-times"
	GcbeMostRecentQuote                                FieldName = "gcbe-most-recent-quote"
	GcbeNumberOfCacheInitDays                          FieldName = "gcbe-number-of-cache-init-days"
	GcbeNumberOfOrphansAfter                           FieldName = "gcbe-number-of-orphans-after"
	GcbeNumberOfOrphansBefore                          FieldName = "gcbe-number-of-orphans-before"
	GcbeNumberOfOrphansDifference                      FieldName = "gcbe-number-of-orphans-difference"
	GcbeNumberOfPages                                  FieldName = "gcbe-number-of-pages"
	GcbeNumberOfRidsSeen                               FieldName = "gcbe-number-of-rids-seen"
	GcbeNumberOfUnexpectedDinerBlocksFound             FieldName = "gcbe-number-of-unexpected-diner-blocks-found"
	GcbeOnlineWaitlistEnabled                          FieldName = "gcbe-online-waitlist-enabled"
	GcbeOrphanReason                                   FieldName = "gcbe-orphan-reason"
	GcbeOrphanTrigger                                  FieldName = "gcbe-orphan-trigger"
	GcbePhoneNumber                                    FieldName = "gcbe-phone-number"
	GcbePositionInLine                                 FieldName = "gcbe-position-in-line"
	GcbeProblematicRidCount                            FieldName = "gcbe-problematic-rid-count"
	GcbeProcessingDelay                                FieldName = "gcbe-processing-delay"
	GcbeProcessingQueueSize                            FieldName = "gcbe-processing-queue-size"
	GcbeProcessingTime                                 FieldName = "gcbe-processing-time"
	GcbeProcessingTimeMs                               FieldName = "gcbe-processing-time-ms"
	GcbeQueuedWorkItemCount                            FieldName = "gcbe-queued-work-item-count"
	GcbeReflowOpportunityFoundAlgorithm                FieldName = "gcbe-reflow-opportunity-found-algorithm"
	GcbeReflowOpportunityFound                         FieldName = "gcbe-reflow-opportunity-found"
	GcbeReflowOpportunityReason                        FieldName = "gcbe-reflow-opportunity-reason"
	GcbeRequestBodyIncoming                            FieldName = "gcbe-request-body-incoming"
	GcbeRequestBodyOutgoing                            FieldName = "gcbe-request-body-outgoing"
	GcbeRequestedBatchSize                             FieldName = "gcbe-requested-batch-size"
	GcbeRequestedDate                                  FieldName = "gcbe-requested-date"
	GcbeRequestedEndTime                               FieldName = "gcbe-requested-end-time"
	GcbeRequestedStartTime                             FieldName = "gcbe-requested-start-time"
	GcbeRequestSource                                  FieldName = "gcbe-request-source"
	GcbeReservationAction                              FieldName = "gcbe-reservation-action"
	GcbeReservationId                                  FieldName = "gcbe-reservation-id"
	GcbeReservationJson                                FieldName = "gcbe-reservation-json"
	GcbeReservationRequestType                         FieldName = "gcbe-reservation-request-type"
	GcbeReservationScheduledDateEnd                    FieldName = "gcbe-reservation-scheduled-date-end"
	GcbeReservationScheduledDateStart                  FieldName = "gcbe-reservation-scheduled-date-start"
	GcbeReservationsOriginatingFrom                    FieldName = "gcbe-reservations-originating-from"
	GcbeReservationSource                              FieldName = "gcbe-reservation-source"
	GcbeReservationState                               FieldName = "gcbe-reservation-state"
	GcbeReservationTime                                FieldName = "gcbe-reservation-time"
	GcbeRestaurantDate                                 FieldName = "gcbe-restaurant-date"
	GcbeRestaurantLocalDateTime                        FieldName = "gcbe-restaurant-local-date-time"
	GcbeRestaurantLocale                               FieldName = "gcbe-restaurant-locale"
	GcbeRestaurantName                                 FieldName = "gcbe-restaurant-name"
	GcbeRetryCount                                     FieldName = "gcbe-retry-count"
	GcbeReversePriorityMaxDt                           FieldName = "gcbe-reverse-priority-max-dt"
	GcbeReversePriorityMinDt                           FieldName = "gcbe-reverse-priority-min-dt"
	GcbeReverseProcessingThresholdDt                   FieldName = "gcbe-reverse-processing-threshold-dt"
	GcbeRidCountReduction                              FieldName = "gcbe-rid-count-reduction"
	GcbeRidsGeneratedCount                             FieldName = "gcbe-rids-generated-count"
	GcbeRidsGeneratedUnfilteredCount                   FieldName = "gcbe-rids-generated-unfiltered-count"
	GcbeRidsReceivedCount                              FieldName = "gcbe-rids-received-count"
	GcbeSequenceId                                     FieldName = "gcbe-sequence-id"
	GcbeSequenceNumberAvstore                          FieldName = "gcbe-sequence-number-avstore"
	GcbeSequenceNumberCurrent                          FieldName = "gcbe-sequence-number-current"
	GcbeSequenceNumberDifference                       FieldName = "gcbe-sequence-number-difference"
	GcbeSequenceNumberInventory                        FieldName = "gcbe-sequence-number-inventory"
	GcbeSequenceNumberResoUpdate                       FieldName = "gcbe-sequence-number-reso-update"
	GcbeSequenceNumberSnapshot                         FieldName = "gcbe-sequence-number-snapshot"
	GcbeServiceGroup                                   FieldName = "gcbe-service-group"
	GcbeSlotLockId                                     FieldName = "gcbe-slot-lock-id"
	GcbeStartDate                                      FieldName = "gcbe-start-date"
	GcbeStartTime                                      FieldName = "gcbe-start-time"
	GcbeTableAssignment                                FieldName = "gcbe-table-assignment"
	GcbeTableCategories                                FieldName = "gcbe-table-categories"
	GcbeTableCategory                                  FieldName = "gcbe-table-category"
	GcbeTaskGroupId                                    FieldName = "gcbe-task-group-id"
	GcbeTaskId                                         FieldName = "gcbe-task-id"
	GcbeThreadInUseCount                               FieldName = "gcbe-thread-in-use-count"
	GcbeTimeDetectedEpoch                              FieldName = "gcbe-time-detected-epoch"
	GcbeTimeElapsedMs                                  FieldName = "gcbe-time-elapsed-ms"
	GcbeTimeReceivedEpoch                              FieldName = "gcbe-time-received-epoch"
	GcbeTimeReceived                                   FieldName = "gcbe-time-received"
	GcbeTimeSentEpoch                                  FieldName = "gcbe-time-sent-epoch"
	GcbeTimeSent                                       FieldName = "gcbe-time-sent"
	GcbeTimeToAbandon                                  FieldName = "gcbe-time-to-abandon"
	GcbeToken                                          FieldName = "gcbe-token"
	GcbeTokenResult                                    FieldName = "gcbe-token-result"
	GcbeTotalDurationMs                                FieldName = "gcbe-total-duration-ms"
	GcbeToTime                                         FieldName = "gcbe-to-time"
	GcbeUnorphanTrigger                                FieldName = "gcbe-unorphan-trigger"
	GcbeWaitingPartiesCount                            FieldName = "gcbe-waiting-parties-count"
	GcbeWaitingTimeMs                                  FieldName = "gcbe-waiting-time-ms"
	GcLowPriority                                      FieldName = "gc-low-priority"
	Gpid                                               FieldName = "gpid"
	GraphiteFlushInterval                              FieldName = "graphite-flush-interval"
	GraphiteServerAddress                              FieldName = "graphite-server-address"
	HandlerKind                                        FieldName = "handler-kind"
	HarnessLogname                                     FieldName = "harness-logname"
	HasSameDayAction                                   FieldName = "has-same-day-action"
	HeaderAcceptCharset                                FieldName = "header-accept-charset"
	HeaderAcceptEncoding                               FieldName = "header-accept-encoding"
	HeaderAccept                                       FieldName = "header-accept"
	HeaderAcceptLanguage                               FieldName = "header-accept-language"
	HeaderActiveresourceRequestId                      FieldName = "header-activeresource-request-id"
	HeaderActiveresourceRuntime                        FieldName = "header-activeresource-runtime"
	HeaderAkamaiBot                                    FieldName = "header-akamai-bot"
	HeaderAuthorization                                FieldName = "header-authorization"
	HeaderClientTime                                   FieldName = "header-client-time"
	HeaderConnection                                   FieldName = "header-connection"
	HeaderContentEncoding                              FieldName = "header-content-encoding"
	HeaderContentLength                                FieldName = "header-content-length"
	HeaderContentType                                  FieldName = "header-content-type"
	HeaderCookie                                       FieldName = "header-cookie"
	HeaderExpect                                       FieldName = "header-expect"
	HeaderHost                                         FieldName = "header-host"
	HeaderKeepAlive                                    FieldName = "header-keep-alive"
	HeaderLocation                                     FieldName = "header-location"
	HeaderOrigin                                       FieldName = "header-origin"
	HeaderOtDomain                                     FieldName = "header-ot-domain"
	HeaderOthers                                       FieldName = "header-others"
	HeaderOtOriginaluri                                FieldName = "header-ot-originaluri"
	HeaderOtReferringHost                              FieldName = "header-ot-referring-host"
	HeaderOtReferringService                           FieldName = "header-ot-referring-service"
	HeaderReferer                                      FieldName = "header-referer"
	HeaderRemoteAddress                                FieldName = "header-remote-address"
	HeaderSingularityheader                            FieldName = "header-singularityheader"
	HeaderTransferEncoding                             FieldName = "header-transfer-encoding"
	HeaderUserAgent                                    FieldName = "header-user-agent"
	HeaderXAkamaiEdgescape                             FieldName = "header-x-akamai-edgescape"
	HeaderXCnection                                    FieldName = "header-x-cnection"
	HeaderXForwardedFor                                FieldName = "header-x-forwarded-for"
	HeaderXForwardedForFirstIp                         FieldName = "header-x-forwarded-for-first-ip"
	HeaderXForwardedPort                               FieldName = "header-x-forwarded-port"
	HeaderXForwardedProto                              FieldName = "header-x-forwarded-proto"
	HeaderXHttpMethodOverride                          FieldName = "header-x-http-method-override"
	HeaderXRealIp                                      FieldName = "header-x-real-ip"
	HermesConversionEventNotes                         FieldName = "hermes-conversion-event-notes"
	HermesConversionEventType                          FieldName = "hermes-conversion-event-type"
	HermesUrl                                          FieldName = "hermes-url"
	HermesUserName                                     FieldName = "hermes-user-name"
	Host                                               FieldName = "host"
	HostHeader                                         FieldName = "host-header"
	Hostname                                           FieldName = "hostname"
	HostPort                                           FieldName = "host-port"
	HttpAction                                         FieldName = "http-action"
	IcmpCode                                           FieldName = "icmp-code"
	IcmpSeqNum                                         FieldName = "icmp-seq-num"
	IcmpType                                           FieldName = "icmp-type"
	IcmpXlatedCode                                     FieldName = "icmp-xlated-code"
	Id                                                 FieldName = "id"
	Incoming                                           FieldName = "incoming"
	InfoType                                           FieldName = "info-type"
	InnerexceptionClassName                            FieldName = "innerexception-class-name"
	InnerexceptionMessage                              FieldName = "innerexception-message"
	InnerexceptionMethod                               FieldName = "innerexception-method"
	InnerexceptionSource                               FieldName = "innerexception-source"
	InnerexceptionStacktrace                           FieldName = "innerexception-stacktrace"
	InReplyTo                                          FieldName = "in-reply-to"
	InstanceNo                                         FieldName = "instance-no"
	IpadClientId                                       FieldName = "ipad-client-id"
	IsTestRestaurant                                   FieldName = "is-test-restaurant"
	JsonValue                                          FieldName = "json-value"
	KafkaBrokers                                       FieldName = "kafka-brokers"
	KafkaLoggerId                                      FieldName = "kafka-logger-id"
	KafkaLoggingLevels                                 FieldName = "kafka-logging-levels"
	KafkaLoggingTopic                                  FieldName = "kafka-logging-topic"
	Language                                           FieldName = "language"
	LanguageRanges                                     FieldName = "language-ranges"
	LimitAddresses                                     FieldName = "limit-addresses"
	LimitCities                                        FieldName = "limit-cities"
	LimitCuisines                                      FieldName = "limit-cuisines"
	LimitLocations                                     FieldName = "limit-locations"
	LimitRestaurants                                   FieldName = "limit-restaurants"
	LineNumber                                         FieldName = "line-number"
	Location                                           FieldName = "location"
	LocationMatches                                    FieldName = "location-matches"
	LogEvent                                           FieldName = "log-event"
	LoggerClass                                        FieldName = "logger-class"
	LoggerName                                         FieldName = "logger-name"
	LoggingLibraryName                                 FieldName = "logging-library-name"
	LoggingLibraryVersion                              FieldName = "logging-library-version"
	Loglov3Otl                                         FieldName = "@loglov3-otl"
	Loglov3Selector                                    FieldName = "@loglov3-selector"
	Logname                                            FieldName = "logname"
	LogName                                            FieldName = "log-name"
	LogSource                                          FieldName = "log-source"
	LoyaltyCurrentState                                FieldName = "loyalty-current-state"
	LoyaltyPreviousState                               FieldName = "loyalty-previous-state"
	Map                                                FieldName = "map"
	MarketRegion                                       FieldName = "market-region"
	MessageBody                                        FieldName = "message-body"
	Message                                            FieldName = "message"
	MessageId                                          FieldName = "message-id"
	MessageTimeSent                                    FieldName = "message-time-sent"
	MessageTrace                                       FieldName = "message-trace"
	MessageType                                        FieldName = "message-type"
	MessageTypeId                                      FieldName = "message-type-id"
	MethodDuration                                     FieldName = "method-duration"
	Method                                             FieldName = "method"
	MethodName                                         FieldName = "method-name"
	MobileAppId                                        FieldName = "mobile-app-id"
	MobileAppVersion                                   FieldName = "mobile-app-version"
	ModifiedAt                                         FieldName = "modified-at"
	Modified                                           FieldName = "modified"
	MongoDurationMs                                    FieldName = "mongo-duration-ms"
	MongoQuery                                         FieldName = "mongo-query"
	NoshowApiForceMessagePublish                       FieldName = "noshow-api-force-message-publish"
	OcComponentHref                                    FieldName = "oc-component-href"
	OcComponentName                                    FieldName = "oc-component-name"
	OcComponentParams                                  FieldName = "oc-component-params"
	OcComponentRenderMode                              FieldName = "oc-component-render-mode"
	OcComponentRequestVersion                          FieldName = "oc-component-request-version"
	OcComponentRetryNumber                             FieldName = "oc-component-retry-number"
	OcComponentVersion                                 FieldName = "oc-component-version"
	OcEventName                                        FieldName = "oc-event-name"
	OcEventOverflow                                    FieldName = "oc-event-overflow"
	OcEventQuantity                                    FieldName = "oc-event-quantity"
	OcJsAppName                                        FieldName = "oc-js-app-name"
	OcJsAppVersion                                     FieldName = "oc-js-app-version"
	OcJsBrowserTime                                    FieldName = "oc-js-browser-time"
	OcJsEventName                                      FieldName = "oc-js-event-name"
	OcJsSessionDuration                                FieldName = "oc-js-session-duration"
	OcJsUrl                                            FieldName = "oc-js-url"
	OcJsUrlQuerystring                                 FieldName = "oc-js-url-querystring"
	OcReviewsParamsBestrestaurantinlinktext            FieldName = "oc-reviews-params-bestrestaurantinlinktext"
	OcReviewsParamsBestrestaurantsinlink               FieldName = "oc-reviews-params-bestrestaurantsinlink"
	OcReviewsParamsCulture                             FieldName = "oc-reviews-params-culture"
	OcReviewsParamsDomain                              FieldName = "oc-reviews-params-domain"
	OcReviewsParamsEnabledinerprofile                  FieldName = "oc-reviews-params-enabledinerprofile"
	OcReviewsParamsEnabledinertipsbottombar            FieldName = "oc-reviews-params-enabledinertipsbottombar"
	OcReviewsParamsEnablediningoccasion                FieldName = "oc-reviews-params-enablediningoccasion"
	OcReviewsParamsEnablediningoccasionicon            FieldName = "oc-reviews-params-enablediningoccasionicon"
	OcReviewsParamsEnablefilterbydiningoccasion        FieldName = "oc-reviews-params-enablefilterbydiningoccasion"
	OcReviewsParamsEnableflippedlayout                 FieldName = "oc-reviews-params-enableflippedlayout"
	OcReviewsParamsEnablehelpfulness                   FieldName = "oc-reviews-params-enablehelpfulness"
	OcReviewsParamsEnablehiddentitle                   FieldName = "oc-reviews-params-enablehiddentitle"
	OcReviewsParamsEnablenavigationcounts              FieldName = "oc-reviews-params-enablenavigationcounts"
	OcReviewsParamsEnablepopulardishes                 FieldName = "oc-reviews-params-enablepopulardishes"
	OcReviewsParamsEnablerecommendedsort               FieldName = "oc-reviews-params-enablerecommendedsort"
	OcReviewsParamsEnablereporting                     FieldName = "oc-reviews-params-enablereporting"
	OcReviewsParamsEnablesearch                        FieldName = "oc-reviews-params-enablesearch"
	OcReviewsParamsEnabletopreviews                    FieldName = "oc-reviews-params-enabletopreviews"
	OcReviewsParamsEnabletranslation                   FieldName = "oc-reviews-params-enabletranslation"
	OcReviewsParamsEnablevoteforcategory               FieldName = "oc-reviews-params-enablevoteforcategory"
	OcReviewsParamsFilterbydiningoccasion              FieldName = "oc-reviews-params-filterbydiningoccasion"
	OcReviewsParamsFilterbyoverallrating               FieldName = "oc-reviews-params-filterbyoverallrating"
	OcReviewsParamsFilterbytagid                       FieldName = "oc-reviews-params-filterbytagid"
	OcReviewsParamsGpid                                FieldName = "oc-reviews-params-gpid"
	OcReviewsParamsHideaspectscores                    FieldName = "oc-reviews-params-hideaspectscores"
	OcReviewsParamsHidetags                            FieldName = "oc-reviews-params-hidetags"
	OcReviewsParamsId                                  FieldName = "oc-reviews-params-id"
	OcReviewsParamsMovedclistsatf                      FieldName = "oc-reviews-params-movedclistsatf"
	OcReviewsParamsPage                                FieldName = "oc-reviews-params-page"
	OcReviewsParamsPagesize                            FieldName = "oc-reviews-params-pagesize"
	OcReviewsParamsReviewid                            FieldName = "oc-reviews-params-reviewid"
	OcReviewsParamsReviewssummarypopupvariant          FieldName = "oc-reviews-params-reviewssummarypopupvariant"
	OcReviewsParamsRid                                 FieldName = "oc-reviews-params-rid"
	OcReviewsParamsSearchby                            FieldName = "oc-reviews-params-searchby"
	OcReviewsParamsSortby                              FieldName = "oc-reviews-params-sortby"
	OcReviewsParamsTranslateto                         FieldName = "oc-reviews-params-translateto"
	OcUaBrowserMajor                                   FieldName = "oc-ua-browser-major"
	OcUaBrowserName                                    FieldName = "oc-ua-browser-name"
	OcUaBrowserVersion                                 FieldName = "oc-ua-browser-version"
	OcUaDeviceModel                                    FieldName = "oc-ua-device-model"
	OcUaDeviceType                                     FieldName = "oc-ua-device-type"
	OcUaDeviceVendor                                   FieldName = "oc-ua-device-vendor"
	OcUaEngineName                                     FieldName = "oc-ua-engine-name"
	OcUaEngineVersion                                  FieldName = "oc-ua-engine-version"
	OcUaOsName                                         FieldName = "oc-ua-os-name"
	OcUaOsVersion                                      FieldName = "oc-ua-os-version"
	OperatingSystem                                    FieldName = "operating-system"
	OperatingSystemVersion                             FieldName = "operating-system-version"
	Operation                                          FieldName = "operation"
	OriginalUri                                        FieldName = "original-uri"
	OsMessage                                          FieldName = "os-message"
	OtCurrentPage                                      FieldName = "ot-current-page"
	OtDomain                                           FieldName = "ot-domain"
	OtEnv                                              FieldName = "ot-env"
	OtEnvFlavor                                        FieldName = "ot-env-flavor"
	OtEnvLocation                                      FieldName = "ot-env-location"
	OtEnvType                                          FieldName = "ot-env-type"
	OtlType                                            FieldName = "otl-type"
	OtUvidPresent                                      FieldName = "ot-uvid-present"
	PartnerAction                                      FieldName = "partner-action"
	PartnerAuditDate                                   FieldName = "partner-audit-date"
	PartnerAuditLocalValue                             FieldName = "partner-audit-local-value"
	PartnerAuditName                                   FieldName = "partner-audit-name"
	PartnerAuditPartySize                              FieldName = "partner-audit-party-size"
	PartnerAuditRemoteValue                            FieldName = "partner-audit-remote-value"
	PartnerAuditSequenceId                             FieldName = "partner-audit-sequence-id"
	PartnerAuditSuccess                                FieldName = "partner-audit-success"
	PartnerDirection                                   FieldName = "partner-direction"
	PartnerId                                          FieldName = "partner-id"
	PartnerName                                        FieldName = "partner-name"
	PartnerOperation                                   FieldName = "partner-operation"
	PartnerStatus                                      FieldName = "partner-status"
	PartySize                                          FieldName = "party-size"
	Path                                               FieldName = "path"
	PauseDuration                                      FieldName = "pause-duration"
	PersonalizerLegacy                                 FieldName = "personalizer-legacy"
	Pid                                                FieldName = "pid"
	PinsConciergeConfirmationNumber                    FieldName = "pins-concierge-confirmation-number"
	PinsCovers                                         FieldName = "pins-covers"
	PinsCustomerConfirmationNumber                     FieldName = "pins-customer-confirmation-number"
	PinsFailedToReleaseCount                           FieldName = "pins-failed-to-release-count"
	PinsLockedAtPrice                                  FieldName = "pins-locked-at-price"
	PinsLockedByGpid                                   FieldName = "pins-locked-by-gpid"
	PinsPointsExchangeId                               FieldName = "pins-points-exchange-id"
	PinsPrice                                          FieldName = "pins-price"
	PinsRedemptionId                                   FieldName = "pins-redemption-id"
	PinsReservationDateTime                            FieldName = "pins-reservation-date-time"
	PinsWasCancelledAtRestaurantDuringSlv              FieldName = "pins-was-cancelled-at-restaurant-during-slv"
	PinsWasCancelledAtRestaurant                       FieldName = "pins-was-cancelled-at-restaurant"
	PinsWasCancelled                                   FieldName = "pins-was-cancelled"
	PinsWasCancelledOt                                 FieldName = "pins-was-cancelled-ot"
	PinsWasCancelledWeb                                FieldName = "pins-was-cancelled-web"
	PinsWasLostDuringTransfer                          FieldName = "pins-was-lost-during-transfer"
	PinsWasNoShow                                      FieldName = "pins-was-no-show"
	PinsWasReleased                                    FieldName = "pins-was-released"
	PinsWasSeated                                      FieldName = "pins-was-seated"
	PinsWhenCancelledAtRestaurantDuringSlv             FieldName = "pins-when-cancelled-at-restaurant-during-slv"
	PinsWhenCancelledAtRestaurant                      FieldName = "pins-when-cancelled-at-restaurant"
	PinsWhenCancelled                                  FieldName = "pins-when-cancelled"
	PinsWhenCancelledOt                                FieldName = "pins-when-cancelled-ot"
	PinsWhenCancelledWeb                               FieldName = "pins-when-cancelled-web"
	PinsWhenLocked                                     FieldName = "pins-when-locked"
	PinsWhenLost                                       FieldName = "pins-when-lost"
	PinsWhenNoShow                                     FieldName = "pins-when-no-show"
	PinsWhenReleased                                   FieldName = "pins-when-released"
	PinsWhenSeated                                     FieldName = "pins-when-seated"
	PinsWhenSold                                       FieldName = "pins-when-sold"
	PolicyId                                           FieldName = "policy-id"
	PreferredReservationDatetime                       FieldName = "preferred-reservation-datetime"
	Process                                            FieldName = "process"
	ProcessGuid                                        FieldName = "process-guid"
	Program                                            FieldName = "program"
	ProgramName                                        FieldName = "program-name"
	PromotedofferAdminApiDurationMs                    FieldName = "promotedoffer-admin-api-duration-ms"
	PromotedofferAdminApiHeaders                       FieldName = "promotedoffer-admin-api-headers"
	PromotedoffersDatasyncDatabase                     FieldName = "promotedoffers-datasync-database"
	PromotedoffersDatasyncObjectsLoadedFromMongo       FieldName = "promotedoffers-datasync-objects-loaded-from-mongo"
	PromotedoffersDatasyncObjectsLoadedFromSql         FieldName = "promotedoffers-datasync-objects-loaded-from-sql"
	PromotedoffersDatasyncTaskname                     FieldName = "promotedoffers-datasync-taskname"
	PromotedoffersDatasyncUpdatedObjects               FieldName = "promotedoffers-datasync-updated-objects"
	Protocol                                           FieldName = "protocol"
	Provider                                           FieldName = "provider"
	ProxyingDurationMicros                             FieldName = "proxying-duration-micros"
	PuppetCatalogCompilationTime                       FieldName = "puppet-catalog-compilation-time"
	PuppetClientEnv                                    FieldName = "puppet-client-env"
	PuppetClient                                       FieldName = "puppet-client"
	PuppetResource                                     FieldName = "puppet-resource"
	Query                                              FieldName = "query"
	QueryString                                        FieldName = "query-string"
	RailsAction                                        FieldName = "rails-action"
	RailsController                                    FieldName = "rails-controller"
	RailsDbDuration                                    FieldName = "rails-db-duration"
	RailsModel                                         FieldName = "rails-model"
	RailsViewDuration                                  FieldName = "rails-view-duration"
	RailsViewFormat                                    FieldName = "rails-view-format"
	RedisCacheMiss                                     FieldName = "redis-cache-miss"
	Referer                                            FieldName = "referer"
	ReferringHost                                      FieldName = "referring-host"
	ReferringService                                   FieldName = "referring-service"
	Region                                             FieldName = "region"
	RelatedUrl                                         FieldName = "related-url"
	RemoteAddress                                      FieldName = "remote-address"
	RemoteLogTimestamp                                 FieldName = "remote-log-timestamp"
	RemotePort                                         FieldName = "remote-port"
	RepliesTo                                          FieldName = "replies-to"
	Report                                             FieldName = "report"
	RequestBookingMarketingOptIn                       FieldName = "request-booking-marketing-opt-in"
	RequestEndpointName                                FieldName = "request-endpoint-name"
	RequestId                                          FieldName = "request-id"
	RequestName                                        FieldName = "request-name"
	RequestParams                                      FieldName = "request-params"
	RequestServiceName                                 FieldName = "request-service-name"
	RequestUri                                         FieldName = "request-uri"
	Requeued                                           FieldName = "requeued"
	ResconfOutgoingServiceArgs                         FieldName = "resconf-outgoing-service-args"
	ResconfOutgoingServiceName                         FieldName = "resconf-outgoing-service-name"
	ResconfParamsReservationdetails                    FieldName = "resconf-params-reservationdetails"
	ResconfReservationdetails                          FieldName = "resconf-reservationdetails"
	ReservationEndDatetime                             FieldName = "reservation-end-datetime"
	ReservationId                                      FieldName = "reservation-id"
	ReservationRegion                                  FieldName = "reservation-region"
	ReservationStartDatetime                           FieldName = "reservation-start-datetime"
	ReservationState                                   FieldName = "reservation-state"
	ReservationStatus                                  FieldName = "reservation-status"
	ReslocQueryPath                                    FieldName = "resloc-query-path"
	ResolveCycleStatus                                 FieldName = "resolve-cycle-status"
	ResolvedDestination                                FieldName = "resolved-destination"
	ResolvedLanguage                                   FieldName = "resolved-language"
	ResourceFamily                                     FieldName = "resource-family"
	ResponseBody                                       FieldName = "response-body"
	ResponseError                                      FieldName = "response-error"
	ResponseSize                                       FieldName = "response-size"
	RespubTotalCount                                   FieldName = "respub-total-count"
	RespubWatermark                                    FieldName = "respub-watermark"
	ResremProcessedCount                               FieldName = "resrem-processed-count"
	ResremTotalCount                                   FieldName = "resrem-total-count"
	RestapiStatus                                      FieldName = "restapi-status"
	RestapiUrl                                         FieldName = "restapi-url"
	RestaurantId                                       FieldName = "restaurant-id"
	RestaurantMatches                                  FieldName = "restaurant-matches"
	RestaurantName                                     FieldName = "restaurant-name"
	ReturnValue                                        FieldName = "return-value"
	ReviewId                                           FieldName = "review-id"
	ReviewsQueryGpid                                   FieldName = "reviews-query-gpid"
	ReviewsQueryIsbatchget                             FieldName = "reviews-query-isbatchget"
	ReviewsQueryKey                                    FieldName = "reviews-query-key"
	ReviewsQueryLimit                                  FieldName = "reviews-query-limit"
	ReviewsQueryMacroid                                FieldName = "reviews-query-macroid"
	ReviewsQueryMetroid                                FieldName = "reviews-query-metroid"
	ReviewsQueryNeighborhoodid                         FieldName = "reviews-query-neighborhoodid"
	ReviewsQueryNumberofreviews                        FieldName = "reviews-query-numberofreviews"
	ReviewsQueryReviewid                               FieldName = "reviews-query-reviewid"
	ReviewsQueryRid                                    FieldName = "reviews-query-rid"
	ReviewsQueryRids                                   FieldName = "reviews-query-rids"
	ReviewsQuerySkipreviews                            FieldName = "reviews-query-skipreviews"
	ReviewsQuerySortby                                 FieldName = "reviews-query-sortby"
	ReviewsQueryStartdate                              FieldName = "reviews-query-startdate"
	ReviewsQueryWinnersonly                            FieldName = "reviews-query-winnersonly"
	ReviewsReportEndDate                               FieldName = "reviews-report-end-date"
	ReviewsReportId                                    FieldName = "reviews-report-id"
	ReviewsReportStartDate                             FieldName = "reviews-report-start-date"
	ReviewText                                         FieldName = "review-text"
	Rid                                                FieldName = "rid"
	RspSocialMediaId                                   FieldName = "rsp-social-media-id"
	RspSocialMediaType                                 FieldName = "rsp-social-media-type"
	RspTaskPhase                                       FieldName = "rsp-task-phase"
	RspTaskState                                       FieldName = "rsp-task-state"
	RuleSourceFile                                     FieldName = "rule-source-file"
	RuleSourceLine                                     FieldName = "rule-source-line"
	RuleSourceVersion                                  FieldName = "rule-source-version"
	RunTime                                            FieldName = "run-time"
	SearchCriteriaPageIndex                            FieldName = "search-criteria-page-index"
	SearchCriteriaProductTypes                         FieldName = "search-criteria-product-types"
	SearchCriteriaQuery                                FieldName = "search-criteria-query"
	SearchCriteriaRetries                              FieldName = "search-criteria-retries"
	SearchCriteriaSortOrder                            FieldName = "search-criteria-sort-order"
	SearchDateTime                                     FieldName = "search-date-time"
	SearchMatchCuisines                                FieldName = "search-match-cuisines"
	SearchMatchDescription                             FieldName = "search-match-description"
	SearchMatches                                      FieldName = "search-matches"
	SearchMatchLocations                               FieldName = "search-match-locations"
	SearchMatchMenu                                    FieldName = "search-match-menu"
	SearchMatchName                                    FieldName = "search-match-name"
	SearchMatchReviews                                 FieldName = "search-match-reviews"
	SearchRids                                         FieldName = "search-rids"
	SearchTerm                                         FieldName = "search-term"
	Sender                                             FieldName = "sender"
	SensuCheckBusinessGroup                            FieldName = "sensu-check-business-group"
	SensuCheckCommand                                  FieldName = "sensu-check-command"
	SensuCheckDuration                                 FieldName = "sensu-check-duration"
	SensuCheckExecuted                                 FieldName = "sensu-check-executed"
	SensuCheckName                                     FieldName = "sensu-check-name"
	SensuCheckOrigin                                   FieldName = "sensu-check-origin"
	SensuCheckOutput                                   FieldName = "sensu-check-output"
	SensuCheckPage                                     FieldName = "sensu-check-page"
	SensuCheckServiceName                              FieldName = "sensu-check-service-name"
	SensuCheckSource                                   FieldName = "sensu-check-source"
	SensuCheckStatus                                   FieldName = "sensu-check-status"
	SensuCheckTeam                                     FieldName = "sensu-check-team"
	SensuCheckTotalStateChange                         FieldName = "sensu-check-total-state-change"
	SensuClientAddress                                 FieldName = "sensu-client-address"
	SensuClientComponentId                             FieldName = "sensu-client-component-id"
	SensuClientName                                    FieldName = "sensu-client-name"
	SensuEventAction                                   FieldName = "sensu-event-action"
	SensuEventId                                       FieldName = "sensu-event-id"
	SensuEventLastOk                                   FieldName = "sensu-event-last-ok"
	SensuEventLastStateChange                          FieldName = "sensu-event-last-state-change"
	SensuEventOccurrences                              FieldName = "sensu-event-occurrences"
	SensuEventSecsSinceLastOk                          FieldName = "sensu-event-secs-since-last-ok"
	SensuEventSilenced                                 FieldName = "sensu-event-silenced"
	SentUserRequestEvent                               FieldName = "sent-user-request-event"
	SequenceNumber                                     FieldName = "sequence-number"
	SerializeTime                                      FieldName = "serialize-time"
	ServerIp                                           FieldName = "server-ip"
	ServerToken                                        FieldName = "server-token"
	ServiceType                                        FieldName = "service-type"
	ServiceUri                                         FieldName = "service-uri"
	ServiceUrl                                         FieldName = "service-url"
	ServletProcessingMicros                            FieldName = "servlet-processing-micros"
	SessionId                                          FieldName = "session-id"
	Severity                                           FieldName = "severity"
	SeverityLabel                                      FieldName = "severity-label"
	SeverityNum                                        FieldName = "severity-num"
	SfdcOauthErrdesc                                   FieldName = "sfdc-oauth-errdesc"
	SfdcOauthErr                                       FieldName = "sfdc-oauth-err"
	SfdcOauthStatus                                    FieldName = "sfdc-oauth-status"
	SfdcRecordId                                       FieldName = "sfdc-record-id"
	SfdcReplayFrom                                     FieldName = "sfdc-replay-from"
	SfdcReplayId                                       FieldName = "sfdc-replay-id"
	SidecarVersion                                     FieldName = "sidecar-version"
	SidekiqJobStatus                                   FieldName = "sidekiq-job-status"
	SidekiqPid                                         FieldName = "sidekiq-pid"
	SidekiqWorkerTid                                   FieldName = "sidekiq-worker-tid"
	SingularityTaskId                                  FieldName = "singularity-task-id"
	SocketDuration                                     FieldName = "socket-duration"
	SourceId                                           FieldName = "source-id"
	SourceLine                                         FieldName = "source-line"
	SousArguments                                      FieldName = "sous-arguments"
	SousDeployInitiatedBy                              FieldName = "sous-deploy-initiated-by"
	SousDeployInitiatedByHost                          FieldName = "sous-deploy-initiated-by-host"
	SousDeployInitiatedBySystem                        FieldName = "sous-deploy-initiated-by-system"
	SousDeployInitiatedByUser                          FieldName = "sous-deploy-initiated-by-user"
	SousDeploymentId                                   FieldName = "sous-deployment-id"
	SousDeployTargetUrl                                FieldName = "sous-deploy-target-url"
	SousDiffDisposition                                FieldName = "sous-diff-disposition"
	SousDiffs                                          FieldName = "sous-diffs"
	SousDuration                                       FieldName = "sous-duration"
	SousErrorBacktrace                                 FieldName = "sous-error-backtrace"
	SousErrorMsg                                       FieldName = "sous-error-msg"
	SousFields                                         FieldName = "sous-fields"
	SousFlaws                                          FieldName = "sous-flaws"
	SousIds                                            FieldName = "sous-ids"
	SousIdValues                                       FieldName = "sous-id-values"
	SousImageName                                      FieldName = "sous-image-name"
	SousListenAddress                                  FieldName = "sous-listen-address"
	SousManifestId                                     FieldName = "sous-manifest-id"
	SousPostArtifactName                               FieldName = "sous-post-artifact-name"
	SousPostArtifactQualities                          FieldName = "sous-post-artifact-qualities"
	SousPostArtifactType                               FieldName = "sous-post-artifact-type"
	SousPostCheckreadyFailurestatuses                  FieldName = "sous-post-checkready-failurestatuses"
	SousPostCheckreadyInterval                         FieldName = "sous-post-checkready-interval"
	SousPostCheckreadyPortindex                        FieldName = "sous-post-checkready-portindex"
	SousPostCheckreadyProtocol                         FieldName = "sous-post-checkready-protocol"
	SousPostCheckreadyRetries                          FieldName = "sous-post-checkready-retries"
	SousPostCheckreadyUripath                          FieldName = "sous-post-checkready-uripath"
	SousPostCheckreadyUritimeout                       FieldName = "sous-post-checkready-uritimeout"
	SousPostClustername                                FieldName = "sous-post-clustername"
	SousPostEnv                                        FieldName = "sous-post-env"
	SousPostFlavor                                     FieldName = "sous-post-flavor"
	SousPostKind                                       FieldName = "sous-post-kind"
	SousPostMetadata                                   FieldName = "sous-post-metadata"
	SousPostNuminstances                               FieldName = "sous-post-numinstances"
	SousPostOffset                                     FieldName = "sous-post-offset"
	SousPostOwners                                     FieldName = "sous-post-owners"
	SousPostRepo                                       FieldName = "sous-post-repo"
	SousPostResources                                  FieldName = "sous-post-resources"
	SousPostStartupConnectdelay                        FieldName = "sous-post-startup-connectdelay"
	SousPostStartupConnectinterval                     FieldName = "sous-post-startup-connectinterval"
	SousPostStartupSkipcheck                           FieldName = "sous-post-startup-skipcheck"
	SousPostStartupTimeout                             FieldName = "sous-post-startup-timeout"
	SousPostStatus                                     FieldName = "sous-post-status"
	SousPostTag                                        FieldName = "sous-post-tag"
	SousPostVolumes                                    FieldName = "sous-post-volumes"
	SousPriorArtifactName                              FieldName = "sous-prior-artifact-name"
	SousPriorArtifactQualities                         FieldName = "sous-prior-artifact-qualities"
	SousPriorArtifactType                              FieldName = "sous-prior-artifact-type"
	SousPriorCheckreadyFailurestatuses                 FieldName = "sous-prior-checkready-failurestatuses"
	SousPriorCheckreadyInterval                        FieldName = "sous-prior-checkready-interval"
	SousPriorCheckreadyPortindex                       FieldName = "sous-prior-checkready-portindex"
	SousPriorCheckreadyProtocol                        FieldName = "sous-prior-checkready-protocol"
	SousPriorCheckreadyRetries                         FieldName = "sous-prior-checkready-retries"
	SousPriorCheckreadyUripath                         FieldName = "sous-prior-checkready-uripath"
	SousPriorCheckreadyUritimeout                      FieldName = "sous-prior-checkready-uritimeout"
	SousPriorClustername                               FieldName = "sous-prior-clustername"
	SousPriorEnv                                       FieldName = "sous-prior-env"
	SousPriorFlavor                                    FieldName = "sous-prior-flavor"
	SousPriorKind                                      FieldName = "sous-prior-kind"
	SousPriorMetadata                                  FieldName = "sous-prior-metadata"
	SousPriorNuminstances                              FieldName = "sous-prior-numinstances"
	SousPriorOffset                                    FieldName = "sous-prior-offset"
	SousPriorOwners                                    FieldName = "sous-prior-owners"
	SousPriorRepo                                      FieldName = "sous-prior-repo"
	SousPriorResources                                 FieldName = "sous-prior-resources"
	SousPriorStartupConnectdelay                       FieldName = "sous-prior-startup-connectdelay"
	SousPriorStartupConnectinterval                    FieldName = "sous-prior-startup-connectinterval"
	SousPriorStartupSkipcheck                          FieldName = "sous-prior-startup-skipcheck"
	SousPriorStartupTimeout                            FieldName = "sous-prior-startup-timeout"
	SousPriorStatus                                    FieldName = "sous-prior-status"
	SousPriorTag                                       FieldName = "sous-prior-tag"
	SousPriorVolumes                                   FieldName = "sous-prior-volumes"
	SousRequestId                                      FieldName = "sous-request-id"
	SousResolutionDescription                          FieldName = "sous-resolution-description"
	SousResolutionErrormessage                         FieldName = "sous-resolution-errormessage"
	SousResolutionErrortype                            FieldName = "sous-resolution-errortype"
	SousResourceCpus                                   FieldName = "sous-resource-cpus"
	SousResourceMemory                                 FieldName = "sous-resource-memory"
	SousResourcePorts                                  FieldName = "sous-resource-ports"
	SousSourceId                                       FieldName = "sous-source-id"
	SousSqlQuery                                       FieldName = "sous-sql-query"
	SousSqlRows                                        FieldName = "sous-sql-rows"
	SousSuccessfulConnection                           FieldName = "sous-successful-connection"
	SousTypes                                          FieldName = "sous-types"
	SrcInterface                                       FieldName = "src-interface"
	SrcIp                                              FieldName = "src-ip"
	SrcMappedIp                                        FieldName = "src-mapped-ip"
	SrcMappedPort                                      FieldName = "src-mapped-port"
	SrcPort                                            FieldName = "src-port"
	SrcXlatedIp                                        FieldName = "src-xlated-ip"
	SslAction                                          FieldName = "ssl-action"
	SslCipher                                          FieldName = "ssl-cipher"
	SslCipherSuite                                     FieldName = "ssl-cipher-suite"
	SslProto                                           FieldName = "ssl-proto"
	StartedAt                                          FieldName = "started-at"
	State                                              FieldName = "state"
	StateMessage                                       FieldName = "state-message"
	Status                                             FieldName = "status"
	SubMessage                                         FieldName = "sub-message"
	SubProg                                            FieldName = "sub-prog"
	Success                                            FieldName = "success"
	SuppressedBusinessRules                            FieldName = "suppressed-business-rules"
	SurveyId                                           FieldName = "survey-id"
	SyncOutcome                                        FieldName = "sync-outcome"
	SyncTask                                           FieldName = "sync-task"
	SyslogId                                           FieldName = "syslog-id"
	TagMatches                                         FieldName = "tag-matches"
	TargetUri                                          FieldName = "target-uri"
	Taskname                                           FieldName = "taskname"
	TaskresultsDatabase                                FieldName = "taskresults-database"
	TaskresultsDeleted                                 FieldName = "taskresults-deleted"
	TaskresultsObjectsLoadedFromMongo                  FieldName = "taskresults-objects-loaded-from-mongo"
	TaskresultsObjectsLoadedFromSql                    FieldName = "taskresults-objects-loaded-from-sql"
	TaskresultsTaskName                                FieldName = "taskresults-task-name"
	TaskresultsUpdates                                 FieldName = "taskresults-updates"
	TcpErrorCode                                       FieldName = "tcp-error-code"
	TcpFlags                                           FieldName = "tcp-flags"
	TemplatedMessage                                   FieldName = "templated-message"
	ThreadName                                         FieldName = "thread-name"
	Threshold                                          FieldName = "threshold"
	TicketExperienceCreateRequest                      FieldName = "ticket-experience-create-request"
	TicketExperienceId                                 FieldName = "ticket-experience-id"
	TicketingTransactionExperienceId                   FieldName = "ticketing-transaction-experience-id"
	TicketingTransactionExperienceVersion              FieldName = "ticketing-transaction-experience-version"
	TicketingTransactionExternalServiceEndpoint        FieldName = "ticketing-transaction-external-service-endpoint"
	TicketingTransactionExternalServiceName            FieldName = "ticketing-transaction-external-service-name"
	TicketingTransactionExternalServiceRequestBody     FieldName = "ticketing-transaction-external-service-request-body"
	TicketingTransactionExternalServiceRequestDuration FieldName = "ticketing-transaction-external-service-request-duration"
	TicketingTransactionExternalServiceRequestStatus   FieldName = "ticketing-transaction-external-service-request-status"
	TicketingTransactionExternalServiceResponseBody    FieldName = "ticketing-transaction-external-service-response-body"
	TicketingTransactionOrderId                        FieldName = "ticketing-transaction-order-id"
	TicketingTransactionUserId                         FieldName = "ticketing-transaction-user-id"
	Timestamp                                          FieldName = "@timestamp"
	TimeToFirstByte                                    FieldName = "time-to-first-byte"
	TimingsDiff                                        FieldName = "timings-diff"
	TimingsLoad                                        FieldName = "timings-load"
	TimingsMap                                         FieldName = "timings-map"
	TimingsUpdate                                      FieldName = "timings-update"
	TmsArchiveAction                                   FieldName = "tms-archive-action"
	TmsArchiveResult                                   FieldName = "tms-archive-result"
	TmsArtifactCount                                   FieldName = "tms-artifact-count"
	TmsComposerName                                    FieldName = "tms-composer-name"
	TmsCompositionContentType                          FieldName = "tms-composition-content-type"
	TmsCompositionFailureDetail                        FieldName = "tms-composition-failure-detail"
	TmsCompositionLog                                  FieldName = "tms-composition-log"
	TmsCompositionSucceeded                            FieldName = "tms-composition-succeeded"
	TmsCompositionTemplateCulture                      FieldName = "tms-composition-template-culture"
	TmsCompositionTemplateDomain                       FieldName = "tms-composition-template-domain"
	TmsCompositionTemplateLanguage                     FieldName = "tms-composition-template-language"
	TmsCompositionTemplateName                         FieldName = "tms-composition-template-name"
	TmsCompositionTemplateType                         FieldName = "tms-composition-template-type"
	TmsCompositionTemplateVersion                      FieldName = "tms-composition-template-version"
	TmsCompositionWasRun                               FieldName = "tms-composition-was-run"
	TmsControllerName                                  FieldName = "tms-controller-name"
	TmsExceptionClassName                              FieldName = "tms-exception-class-name"
	TmsExceptionHresult                                FieldName = "tms-exception-hresult"
	TmsExceptionMessage                                FieldName = "tms-exception-message"
	TmsExceptionMethod                                 FieldName = "tms-exception-method"
	TmsExceptionSource                                 FieldName = "tms-exception-source"
	TmsExceptionStacktrace                             FieldName = "tms-exception-stacktrace"
	TmsInnerexceptionClassName                         FieldName = "tms-innerexception-class-name"
	TmsInnerexceptionHresult                           FieldName = "tms-innerexception-hresult"
	TmsInnerexceptionMessage                           FieldName = "tms-innerexception-message"
	TmsInnerexceptionMethod                            FieldName = "tms-innerexception-method"
	TmsInnerexceptionSource                            FieldName = "tms-innerexception-source"
	TmsInnerexceptionStacktrace                        FieldName = "tms-innerexception-stacktrace"
	TmsOcParameters                                    FieldName = "tms-oc-parameters"
	TmsPingConnections                                 FieldName = "tms-ping-connections"
	TmsPingConsumingFrom                               FieldName = "tms-ping-consuming-from"
	TmsPingDiscoverService                             FieldName = "tms-ping-discover-service"
	TmsRabbitmqHeadersXDeath                           FieldName = "tms-rabbitmq-headers-x-death"
	TmsRabbitmqMessageContentType                      FieldName = "tms-rabbitmq-message-content-type"
	TmsRabbitmqMessage                                 FieldName = "tms-rabbitmq-message"
	TmsRabbitmqQueue                                   FieldName = "tms-rabbitmq-queue"
	TmsRawHttpHeaders                                  FieldName = "tms-raw-http-headers"
	TmsRelativeUrl                                     FieldName = "tms-relative-url"
	TmsRequestBody                                     FieldName = "tms-request-body"
	TmsRequestEndpointName                             FieldName = "tms-request-endpoint-name"
	TmsRequestServiceName                              FieldName = "tms-request-service-name"
	TmsRequestStatus                                   FieldName = "tms-request-status"
	TmsSendgridUsername                                FieldName = "tms-sendgrid-username"
	TmsSgeventPayload                                  FieldName = "tms-sgevent-payload"
	TmsSgeventType                                     FieldName = "tms-sgevent-type"
	TmsTicketId                                        FieldName = "tms-ticket-id"
	Topics                                             FieldName = "topics"
	TopicSubscribed                                    FieldName = "topic-subscribed"
	TripexprAuthorized                                 FieldName = "tripexpr-authorized"
	TripexprDestinationLocation                        FieldName = "tripexpr-destination-location"
	TripexprEta                                        FieldName = "tripexpr-eta"
	TripexprRecommendations                            FieldName = "tripexpr-recommendations"
	TripexprUberId                                     FieldName = "tripexpr-uber-id"
	TrueClientIp                                       FieldName = "true-client-ip"
	TryNumber                                          FieldName = "try-number"
	UniformUserAgent                                   FieldName = "uniform-user-agent"
	UpdateResolveId                                    FieldName = "update-resolve-id"
	UpdateStatus                                       FieldName = "update-status"
	UpdateUrl                                          FieldName = "update-url"
	Url                                                FieldName = "url"
	UrlHostname                                        FieldName = "url-hostname"
	UrlPathname                                        FieldName = "url-pathname"
	UrlPort                                            FieldName = "url-port"
	UrlQuerystring                                     FieldName = "url-querystring"
	UrlTemplate                                        FieldName = "url-template"
	UserAgent                                          FieldName = "user-agent"
	UserauthProviderDuration                           FieldName = "userauth-provider-duration"
	UserauthProvider                                   FieldName = "userauth-provider"
	UserauthProviderResult                             FieldName = "userauth-provider-result"
	UserauthToken                                      FieldName = "userauth-token"
	UserauthUserserviceDuration                        FieldName = "userauth-userservice-duration"
	UserEmail                                          FieldName = "user-email"
	UserId                                             FieldName = "user-id"
	UserLocale                                         FieldName = "user-locale"
	Username                                           FieldName = "username"
	UserName                                           FieldName = "user-name"
	Uuid                                               FieldName = "@uuid"
	Worker                                             FieldName = "worker"
	XForwardedFor                                      FieldName = "x-forwarded-for"
	XForwardedForFirstIp                               FieldName = "x-forwarded-for-first-ip"
)

type FieldReportFn

type FieldReportFn func(FieldName, interface{})

FieldReportFn is used by LogMessages to report their fields.

func (FieldReportFn) All

func (frf FieldReportFn) All(efs ...EachFielder)

All calls EachField on each of the arguments.

type Level

type Level int

Level is the "level" of a log message (e.g. debug vs fatal)

const (
	// CriticalLevel is the level for logging critical errors.
	CriticalLevel Level = iota

	// WarningLevel is the level for messages that may be problematic.
	WarningLevel

	// InformationLevel is for messages generated during normal operation.
	InformationLevel

	// DebugLevel is for messages primarily of interest to the software's developers.
	DebugLevel

	// ExtraDebug1Level is the first level of "super" debug messages.
	ExtraDebug1Level

	// ExtremeLevel is the "maximum" log level
	ExtremeLevel
)

Level constants are used to communicate the severity of a log message. Note that other possible values of Level will likely result in defaulting to ExtraDebug1Level.

func (Level) DefaultLevel

func (lvl Level) DefaultLevel() Level

DefaultLevel is a convenience - by embedding a Level, a message can partially implement LogMessage

func (Level) EachField

func (lvl Level) EachField(fn FieldReportFn)

func (Level) String

func (i Level) String() string

type LevelRecommender

type LevelRecommender interface {
	RecommendedLevel() Level
}

A LevelRecommender can recommend a log level.

type LogMessage

type LogMessage interface {
	OldLogMessage
	// Called to report the individual fields for this message.
	EachField(fn FieldReportFn)
}

A LogMessage has structured data to report to the structured log server (c.f. Deliver). Almost every implementation of LogMessage should include a CallerInfo.

type LogSet

type LogSet struct {
	// contains filtered or unexported fields
}

LogSet is the stopgap for a decent injectable logger

func NewLogSet

func NewLogSet(version semv.Version, name string, role string, err io.Writer, context ...EachFielder) *LogSet

NewLogSet builds a new Logset that feeds to the listed writers

func SilentLogSet

func SilentLogSet() *LogSet

SilentLogSet returns a logset that discards everything by default

func (LogSet) AtExit

func (ls LogSet) AtExit()

AtExit implements part of LogSink on LogSet

func (*LogSet) BeChatty

func (ls *LogSet) BeChatty()

BeChatty gets the LogSet to print all its output - useful for temporary debugging

func (*LogSet) BeHelpful

func (ls *LogSet) BeHelpful()

BeHelpful gets the LogSet to print debugging output

func (*LogSet) BeQuiet

func (ls *LogSet) BeQuiet()

BeQuiet gets the LogSet to discard all its output

func (*LogSet) BeSilent

func (ls *LogSet) BeSilent()

BeSilent not only sets the log level to Error, it also sets console output to Discard .Note that as implemented, console output cannot be recovered - it's assumed that BeSilent will be called once per execution.

func (*LogSet) BeTerse

func (ls *LogSet) BeTerse()

BeTerse gets the LogSet to print debugging output

func (LogSet) Child

func (ls LogSet) Child(name string, context ...EachFielder) LogSink

Child produces a child logset, namespaced under "name".

func (LogSet) ClearCounter

func (ls LogSet) ClearCounter(name string)

ClearCounter implements part of LogSink on LogSet

func (*LogSet) Configure

func (ls *LogSet) Configure(cfg Config) error

Configure allows an existing LogSet to change its settings.

func (LogSet) Console

func (ls LogSet) Console() WriteDoner

Console implements LogSink on LogSet

func (LogSet) DecCounter

func (ls LogSet) DecCounter(name string, amount int64)

DecCounter implements part of LogSink on LogSet

func (LogSet) Done

func (ls LogSet) Done()

Done signals that the LogSet (as a MetricsSink) is done being used - LogSet's current implementation treats this as a no-op but c.f. MetricsSink. xxx noop until extracted a metrics sink

func (LogSet) ExpHandler

func (ls LogSet) ExpHandler() http.Handler

ExpHandler returns an http.Handler to export metrics registered with this LogSet. panics if the LogSet hasn't been set up with metrics yet.

func (LogSet) ExtraConsole

func (ls LogSet) ExtraConsole() WriteDoner

ExtraConsole implements LogSink on LogSet

func (LogSet) Fields

func (ls LogSet) Fields(items []EachFielder)

Fields implements LogSink on LogSet.

func (LogSet) ForceDefer

func (ls LogSet) ForceDefer() bool

ForceDefer returns false to register the "normal" behavior of LogSet.

func (LogSet) GetCounter

func (ls LogSet) GetCounter(name string) Counter

GetCounter returns a counter so that components can count things.

func (LogSet) GetLevel

func (ls LogSet) GetLevel() Level

GetLevel returns the current level of this LogSet

func (LogSet) GetTimer

func (ls LogSet) GetTimer(name string) Timer

GetTimer returns a timer so that components can record timing metrics.

func (LogSet) GetUpdater

func (ls LogSet) GetUpdater(name string) Updater

GetUpdater returns an updater that records both the immediate value and a decaying sample.

func (LogSet) HasMetrics

func (ls LogSet) HasMetrics() bool

HasMetrics indicates whether this LogSet has been configured with metrics

func (LogSet) IncCounter

func (ls LogSet) IncCounter(name string, amount int64)

IncCounter implements part of LogSink on LogSet

func (LogSet) Metrics

func (ls LogSet) Metrics() MetricsSink

Metrics returns a MetricsSink, which can receive various metrics related method calls. (c.f) LogSet.Metrics returns itself - xxx quickie for providing metricssink

func (LogSet) UpdateSample

func (ls LogSet) UpdateSample(name string, value int64)

UpdateSample implements part of LogSink on LogSet

func (LogSet) UpdateTimer

func (ls LogSet) UpdateTimer(name string, dur time.Duration)

UpdateTimer implements part of LogSink on LogSet

func (LogSet) UpdateTimerSince

func (ls LogSet) UpdateTimerSince(name string, time time.Time)

UpdateTimerSince implements part of LogSink on LogSet

type LogSink

type LogSink interface {
	// Child returns a namespaced child, with a set of EachFielders for context.
	Child(name string, context ...EachFielder) LogSink

	// Fields is used to record the name/value fields of a structured message.
	Fields([]EachFielder)

	// Metrics returns a MetricsSink, which will be used to record MetricsMessages.
	Metrics() MetricsSink

	// Console returns a WriteDoner, which will be used to record ConsoleMessages.
	Console() WriteDoner

	// ExtraConsole returns a WriteDoner, which will be used to record ExtraConsoleMessages.
	ExtraConsole() WriteDoner

	// AtExit() does last-minute cleanup of stuff
	AtExit()

	// ForceDefer is used during testing to suspend the "panic during testing" behavior.
	ForceDefer() bool
}

A LogSink can be used in Deliver to send messages for logging.

type LogSinkController

type LogSinkController struct {
	*spies.Spy
	Metrics metricsSinkController
	Console writeDonerController
}

LogSinkController allows testing code to manipulate and inspect the spies returned by NewLogSinkSpy

func (LogSinkController) DumpLogs

func (lsc LogSinkController) DumpLogs(t *testing.T)

DumpLogs logs each logged message to the LogSinkSpy Useful in integration tests to see what was logged

type MemResourceField

type MemResourceField int64

MemResourceField is a specialization of float64 to handle details of ELK.

func (MemResourceField) EachField

func (f MemResourceField) EachField(fn FieldReportFn)

EachField implements EachFielder on CPUResourceField.

type MessageField

type MessageField string

A MessageField is a quick wrapper for string with EachField.

func (MessageField) EachField

func (m MessageField) EachField(fn FieldReportFn)

EachField implements EachFielder on MessageField.

func (MessageField) String

func (m MessageField) String() string

type MessageInterval

type MessageInterval struct {
	// contains filtered or unexported fields
}

A MessageInterval is used where messages refer to an event that spans an interval of time.

func CompleteInterval

func CompleteInterval(start time.Time) MessageInterval

CompleteInterval returns and interval that closes at the time of call.

func NewInterval

func NewInterval(start, end time.Time) MessageInterval

NewInterval allows callers to completely specify start and end times.

func OpenInterval

func OpenInterval(start time.Time) MessageInterval

OpenInterval returns "the beginning" of an interval - on which hasn't completed yet.

func (MessageInterval) Complete

func (i MessageInterval) Complete() bool

Complete queries whether the interval is closed - in other words: does it have an end time?

func (MessageInterval) EachField

func (i MessageInterval) EachField(fn FieldReportFn)

EachField implements eachFielder on MessageInterval. In general, messages that include a MessageInterval should pass the FieldReportFn they receive on their own EachField to their interval.

func (MessageInterval) TimeMetric

func (i MessageInterval) TimeMetric(name string, sink MetricsSink)

TimeMetric records a duration metric for this interval if it's complete.

type MetricsMessage

type MetricsMessage interface {
	MetricsTo(MetricsSink)
}

A MetricsMessage has metrics data to record (c.f. Deliver)

type MetricsSink

type MetricsSink interface {
	ClearCounter(name string)
	IncCounter(name string, amount int64)
	DecCounter(name string, amount int64)

	UpdateTimer(name string, dur time.Duration)
	UpdateTimerSince(name string, time time.Time)

	UpdateSample(name string, value int64)

	Done()
}

A MetricsSink is passed into a MetricsMessage's MetricsTo(), so that the it can record its metrics. Once done, the Done method is called - if the metrics are incomplete or insistent, the MetricsSink can then report errors. xxx this facility is preliminary, and Sous doesn't yet record these errors.

func NewMetricsSpy

func NewMetricsSpy() (MetricsSink, metricsSinkController)

Returns a spy/controller pair

type OTLName

type OTLName string
const (
	ActiveresourceOutgoingRequestV1             OTLName = "activeresource-outgoing-request-v1"
	AttributionServiceApplicationV1             OTLName = "attribution-service-application-v1"
	AttributionServiceBeginRequestV1            OTLName = "attribution-service-begin-request-v1"
	AttributionServiceFirstByteV1               OTLName = "attribution-service-first-byte-v1"
	AttributionServiceRequestV1                 OTLName = "attribution-service-request-v1"
	AuthServerV1                                OTLName = "auth-server-v1"
	AutocompleteSearchV1                        OTLName = "autocomplete-search-v1"
	AvailabilitymeasurementsApplication         OTLName = "availabilitymeasurements-application"
	AvailabilityServiceApplicationV1            OTLName = "availability-service-application-v1"
	AvailabilityServiceRequestV1                OTLName = "availability-service-request-v1"
	AvstoreServiceApplicationV1                 OTLName = "avstore-service-application-v1"
	BillingengineV1                             OTLName = "billingengine-v1"
	BookingFlowReservationServiceErrV1          OTLName = "booking-flow-reservation-service-err-v1"
	CallStackV1                                 OTLName = "call-stack-v1"
	ChatEndpointV2                              OTLName = "chat-endpoint-v2"
	ChatLogV2                                   OTLName = "chat-log-v2"
	ChatMessageV2                               OTLName = "chat-message-v2"
	ChatRequestV2                               OTLName = "chat-request-v2"
	CommandV1                                   OTLName = "command-v1"
	ConnectInstantAlertsBaseV1                  OTLName = "connect-instant-alerts-base-v1"
	ConnectInstantAlertsComposerMessage         OTLName = "connect-instant-alerts-composer-message"
	ConnectInstantAlertsFilterMessage           OTLName = "connect-instant-alerts-filter-message"
	ConnectInstantAlertsReservationState        OTLName = "connect-instant-alerts-reservation-state"
	ConnectInstantAlertsSubscription            OTLName = "connect-instant-alerts-subscription"
	ConsapiApplicationCommon                    OTLName = "consapi-application-common"
	ConsapiApplicationV1                        OTLName = "consapi-application-v1"
	ConsapiRequestV1                            OTLName = "consapi-request-v1"
	CsharpLegacyLoggingV1                       OTLName = "csharp-legacy-logging-v1"
	CuisinesServiceApplicationV1                OTLName = "cuisines-service-application-v1"
	CuisinesServiceRequestV1                    OTLName = "cuisines-service-request-v1"
	CwbApplication                              OTLName = "cwb-application"
	DatamartApplication                         OTLName = "datamart-application"
	DatasourcesCoversApiRequestV1Access         OTLName = "datasources-covers-api-request-v1-access"
	DatasourcesCoversApiRequestV1Msg            OTLName = "datasources-covers-api-request-v1-msg"
	DatasyncExceptionV3                         OTLName = "datasync-exception-v3"
	DatasyncTaskinformationV4                   OTLName = "datasync-taskinformation-v4"
	DatasyncV1                                  OTLName = "datasync-v1"
	DevicenotificationApplicationV2             OTLName = "devicenotification-application-v2"
	DevicenotificationPushresultV2              OTLName = "devicenotification-pushresult-v2"
	DevicenotificationPushsentV2                OTLName = "devicenotification-pushsent-v2"
	DevicenotificationRequestV2                 OTLName = "devicenotification-request-v2"
	DffExceptionV1                              OTLName = "dff-exception-v1"
	DffOutboundV1                               OTLName = "dff-outbound-v1"
	DffRequestV1                                OTLName = "dff-request-v1"
	DiscoveryAnnouncementV1                     OTLName = "discovery-announcement-v1"
	DisputeNoShowMicrositeApplicationV1         OTLName = "dispute-no-show-microsite-application-v1"
	DisputeNoShowMicrositeRequestV1             OTLName = "dispute-no-show-microsite-request-v1"
	DomainsApiMsgV1                             OTLName = "domains-api-msg-v1"
	DomainsApiRequestV1                         OTLName = "domains-api-request-v1"
	DotnetCommonV1                              OTLName = "dotnet-common-v1"
	DotnetCoreOtLoggerHttpRequestV1             OTLName = "dotnet-core-ot-logger-http-request-v1"
	EmailApplication                            OTLName = "email-application"
	ExternalApiCcRequestV3                      OTLName = "external-api-cc-request-v3"
	ExternalApiRequestV8                        OTLName = "external-api-request-v8"
	ForgetmenotApplicationV2                    OTLName = "forgetmenot-application-v2"
	ForgetmenotDeliveryV2                       OTLName = "forgetmenot-delivery-v2"
	ForgetmenotDiscoveryV2                      OTLName = "forgetmenot-discovery-v2"
	ForgetmenotQueuemetricsV2                   OTLName = "forgetmenot-queuemetrics-v2"
	ForgetmenotRequestV2                        OTLName = "forgetmenot-request-v2"
	ForgetmenotVitalsV2                         OTLName = "forgetmenot-vitals-v2"
	FreetextSearchV1                            OTLName = "freetext-search-v1"
	FreetextSearchV2                            OTLName = "freetext-search-v2"
	FrontdoorRequestV1                          OTLName = "frontdoor-request-v1"
	GcapsHarnessApplicationMessageV1            OTLName = "gcaps-harness-application-message-v1"
	GcBackofficeApiClientTimingV1               OTLName = "gc-backoffice-api-client-timing-v1"
	GcBackofficeApiCommonV1                     OTLName = "gc-backoffice-api-common-v1"
	GcBackofficeApiMessageV1                    OTLName = "gc-backoffice-api-message-v1"
	GcBackofficeApiRequestBeginV1               OTLName = "gc-backoffice-api-request-begin-v1"
	GcBackofficeApiRequestCommonV1              OTLName = "gc-backoffice-api-request-common-v1"
	GcBackofficeApiRequestEndV1                 OTLName = "gc-backoffice-api-request-end-v1"
	GcBackofficeWebCommonV1                     OTLName = "gc-backoffice-web-common-v1"
	GcBackofficeWebMessageV1                    OTLName = "gc-backoffice-web-message-v1"
	GcBackofficeWebRequestBeginV1               OTLName = "gc-backoffice-web-request-begin-v1"
	GcBackofficeWebRequestCommonV1              OTLName = "gc-backoffice-web-request-common-v1"
	GcBackofficeWebRequestEndV1                 OTLName = "gc-backoffice-web-request-end-v1"
	GcbeApplicationCommon                       OTLName = "gcbe-application-common"
	GcbeApplication                             OTLName = "gcbe-application"
	GcbeCommon                                  OTLName = "gcbe-common"
	GcbeDeploy                                  OTLName = "gcbe-deploy"
	GcbeDomainFields                            OTLName = "gcbe-domain-fields"
	GcbeRequestCommon                           OTLName = "gcbe-request-common"
	GcbeRequestEntrance                         OTLName = "gcbe-request-entrance"
	GcbeRequestWithResponse                     OTLName = "gcbe-request-with-response"
	GcConnectWebMessageV1                       OTLName = "gc-connect-web-message-v1"
	GcConnectWebRequestV1                       OTLName = "gc-connect-web-request-v1"
	GcFohMobileWebMessageV1                     OTLName = "gc-foh-mobile-web-message-v1"
	GcFohMobileWebRequestV1                     OTLName = "gc-foh-mobile-web-request-v1"
	GcFohWebMessageV1                           OTLName = "gc-foh-web-message-v1"
	GcFohWebRequestV1                           OTLName = "gc-foh-web-request-v1"
	GcWebCommonV1                               OTLName = "gc-web-common-v1"
	GcwebDbSanityChecker                        OTLName = "gcweb-db-sanity-checker"
	GlobalRequiredV1                            OTLName = "global-required-v1"
	GraphqlApiRequestV1                         OTLName = "graphql-api-request-v1"
	HarnessApplicationMessageV1                 OTLName = "harness-application-message-v1"
	HarnessCommonV1                             OTLName = "harness-common-v1"
	HarnessOutgoingV1                           OTLName = "harness-outgoing-v1"
	HarnessRequestWithoutResponseV1             OTLName = "harness-request-without-response-v1"
	HarnessRequestWithResponseV1                OTLName = "harness-request-with-response-v1"
	HermesBaseV1                                OTLName = "hermes-base-v1"
	HermesConversionEventV1                     OTLName = "hermes-conversion-event-v1"
	HermesMsgV1                                 OTLName = "hermes-msg-v1"
	HermesRequestV1                             OTLName = "hermes-request-v1"
	HermesSyncErrorV1                           OTLName = "hermes-sync-error-v1"
	HermesSyncSubmitAttemptV1                   OTLName = "hermes-sync-submit-attempt-v1"
	HermesSyncV1                                OTLName = "hermes-sync-v1"
	HttpHeadersV1                               OTLName = "http-headers-v1"
	HttpResponseV1                              OTLName = "http-response-v1"
	HttpV1                                      OTLName = "http-v1"
	InventoryApplication                        OTLName = "inventory-application"
	LocationApiRequestV2                        OTLName = "location-api-request-v2"
	LoyaltyMsgV1                                OTLName = "loyalty-msg-v1"
	LoyaltyStateTransitionV1                    OTLName = "loyalty-state-transition-v1"
	MaintenanceApplication                      OTLName = "maintenance-application"
	MercuryErrorV1                              OTLName = "mercury-error-v1"
	MercuryInfoV1                               OTLName = "mercury-info-v1"
	MesosMasterV1                               OTLName = "mesos-master-v1"
	MobileRestV1                                OTLName = "mobile-rest-v1"
	MobileWebCommonV1                           OTLName = "mobile-web-common-v1"
	MobileWebDebugV1                            OTLName = "mobile-web-debug-v1"
	MobileWebExceptionV1                        OTLName = "mobile-web-exception-v1"
	MobileWebFrontendMsg                        OTLName = "mobile-web-frontend-msg"
	MobileWebHttpRequestV1                      OTLName = "mobile-web-http-request-v1"
	MobileWebServiceExceptionV1                 OTLName = "mobile-web-service-exception-v1"
	MongoQueryV1                                OTLName = "mongo-query-v1"
	MsgV1                                       OTLName = "msg-v1"
	MsgWithCallStackV1                          OTLName = "msg-with-call-stack-v1"
	NetworkF5V1                                 OTLName = "network-f5-v1"
	NetworkFirewallV1                           OTLName = "network-firewall-v1"
	NetworkV1                                   OTLName = "network-v1"
	NodejsBaseV1                                OTLName = "nodejs-base-v1"
	NodejsHapiBaseRequestV1                     OTLName = "nodejs-hapi-base-request-v1"
	NodejsIncomingRequestError                  OTLName = "nodejs-incoming-request-error"
	NodejsIncomingRequestV1                     OTLName = "nodejs-incoming-request-v1"
	NodejsLogErrorV1                            OTLName = "nodejs-log-error-v1"
	NodejsLogLineV1                             OTLName = "nodejs-log-line-v1"
	NodejsOtLoggerHttpRequestV1                 OTLName = "nodejs-ot-logger-http-request-v1"
	NodejsOtRequestHttpOutgoingV1               OTLName = "nodejs-ot-request-http-outgoing-v1"
	NodejsOutgoingRequestV1                     OTLName = "nodejs-outgoing-request-v1"
	NodejsPauseTimeV1                           OTLName = "nodejs-pause-time-v1"
	NodejsRequestBaseV1                         OTLName = "nodejs-request-base-v1"
	NodejsRequestSearch                         OTLName = "nodejs-request-search"
	NoshowApiApplicationV1                      OTLName = "noshow-api-application-v1"
	NoshowApiRequestV1                          OTLName = "noshow-api-request-v1"
	OcComponentJsEventV1                        OTLName = "oc-component-js-event-v1"
	OcCoreDataMsgV1                             OTLName = "oc-core-data-msg-v1"
	OcCoreDataRequestV1                         OTLName = "oc-core-data-request-v1"
	OcRegistryBase                              OTLName = "oc-registry-base"
	OcRegistryComponentRetrieved                OTLName = "oc-registry-component-retrieved"
	OcRegistryEvent                             OTLName = "oc-registry-event"
	OcRegistryRequest                           OTLName = "oc-registry-request"
	OcReviewsComponentInfoV1                    OTLName = "oc-reviews-component-info-v1"
	OcReviewsComponentsErrorV1                  OTLName = "oc-reviews-components-error-v1"
	OcReviewsComponentsParamsV1                 OTLName = "oc-reviews-components-params-v1"
	OtGoLibHelperHtmlV1                         OTLName = "ot-go-lib-helper-html-v1"
	OtGoLibHelperV1                             OTLName = "ot-go-lib-helper-v1"
	OtRailsResponseV1                           OTLName = "ot-rails-response-v1"
	OtRailsSidekiqJobV1                         OTLName = "ot-rails-sidekiq-job-v1"
	OtV1                                        OTLName = "ot-v1"
	PersonalizerIndexerApplicationV1            OTLName = "personalizer-indexer-application-v1"
	PersonalizerServerApplicationAutocompleteV1 OTLName = "personalizer-server-application-autocomplete-v1"
	PersonalizerServerApplicationV1             OTLName = "personalizer-server-application-v1"
	PersonalizerServerRequestExceptionV1        OTLName = "personalizer-server-request-exception-v1"
	PersonalizerServerRequestV1                 OTLName = "personalizer-server-request-v1"
	PhotocenterApplicationV1                    OTLName = "photocenter-application-v1"
	PhotoResizerApplicationV1                   OTLName = "photo-resizer-application-v1"
	PhotoServiceApplicationV1                   OTLName = "photo-service-application-v1"
	PinsLogLineV1                               OTLName = "pins-log-line-v1"
	PinsMsgV1                                   OTLName = "pins-msg-v1"
	PointsApiRequestV1                          OTLName = "points-api-request-v1"
	PointsSyncServiceApplicationV1              OTLName = "points-sync-service-application-v1"
	PremiumTableV1                              OTLName = "premium-table-v1"
	PrivateDiningAdminServiceApplicationV1      OTLName = "private-dining-admin-service-application-v1"
	PromoAdminApplicationV2                     OTLName = "promo-admin-application-v2"
	PromoAdminExceptionV2                       OTLName = "promo-admin-exception-v2"
	PromoAdminRequestV2                         OTLName = "promo-admin-request-v2"
	PromoApplicationV3                          OTLName = "promo-application-v3"
	PromoRequestV3                              OTLName = "promo-request-v3"
	PromotedofferAdminApiRequestV1              OTLName = "promotedoffer-admin-api-request-v1"
	PromotedofferAdminBaseV1                    OTLName = "promotedoffer-admin-base-v1"
	PromotedofferAdminDatasyncTaskexceptionV1   OTLName = "promotedoffer-admin-datasync-taskexception-v1"
	PromotedofferAdminDatasyncTaskinfoV1        OTLName = "promotedoffer-admin-datasync-taskinfo-v1"
	PromotedofferApiApplicationV1               OTLName = "promotedoffer-api-application-v1"
	PuppetserverV1                              OTLName = "puppetserver-v1"
	ReachabilityServiceApplicationV1            OTLName = "reachability-service-application-v1"
	ReflowApplication                           OTLName = "reflow-application"
	RelatedListingsApiRequestV1                 OTLName = "related-listings-api-request-v1"
	RequestBookingsLbstatusV1                   OTLName = "request-bookings-lbstatus-v1"
	RequestBookingsModifyBookingV1              OTLName = "request-bookings-modify-booking-v1"
	RequestBookingsRequestV1                    OTLName = "request-bookings-request-v1"
	RequestBookingsSalesforceV1                 OTLName = "request-bookings-salesforce-v1"
	RequestBookingsServiceStatusV1              OTLName = "request-bookings-service-status-v1"
	ReservationPublisherApplicationV1           OTLName = "reservation-publisher-application-v1"
	ReservationpublisherApplicationV2           OTLName = "reservationpublisher-application-v2"
	ReservationpublisherRequestV2               OTLName = "reservationpublisher-request-v2"
	ReservationreminderApplicationV2            OTLName = "reservationreminder-application-v2"
	ReservationreminderRequestV2                OTLName = "reservationreminder-request-v2"
	ReservationServiceApplicationV1             OTLName = "reservation-service-application-v1"
	ReservationServiceRequestV1                 OTLName = "reservation-service-request-v1"
	ReservationUpdateServiceApplicationV1       OTLName = "reservation-update-service-application-v1"
	ReservationUpdateServiceRequestV1           OTLName = "reservation-update-service-request-v1"
	ResourceLocatorApplicationV1                OTLName = "resource-locator-application-v1"
	ResourceLocatorRequestV1                    OTLName = "resource-locator-request-v1"
	RestaurantAdminApplicationV1                OTLName = "restaurant-admin-application-v1"
	RestaurantAdminRequestV1                    OTLName = "restaurant-admin-request-v1"
	RestaurantApiApplicationV1                  OTLName = "restaurant-api-application-v1"
	RestaurantEventPublisherApplicationV1       OTLName = "restaurant-event-publisher-application-v1"
	RestaurantMessagesApiMsgV1                  OTLName = "restaurant-messages-api-msg-v1"
	RestaurantMessagesApiRequestV1              OTLName = "restaurant-messages-api-request-v1"
	RestaurantMessagesGeneratorApiMsgV1         OTLName = "restaurant-messages-generator-api-msg-v1"
	RestaurantMessagesGeneratorApiRequestV1     OTLName = "restaurant-messages-generator-api-request-v1"
	RestaurantSurveyApplicationV1               OTLName = "restaurant-survey-application-v1"
	RestaurantSurveyRequestV1                   OTLName = "restaurant-survey-request-v1"
	RestaurantSyncServiceApplicationV1          OTLName = "restaurant-sync-service-application-v1"
	RestrefFrontendMsgV1                        OTLName = "restref-frontend-msg-v1"
	ReviewsApiExceptionV1                       OTLName = "reviews-api-exception-v1"
	ReviewsApiRequestV1                         OTLName = "reviews-api-request-v1"
	ReviewsLog4netExceptionV1                   OTLName = "reviews-log4net-exception-v1"
	ReviewsReportsV1                            OTLName = "reviews-reports-v1"
	ReviewsTasksApplicationV1                   OTLName = "reviews-tasks-application-v1"
	ReviewsTasksOutboundV1                      OTLName = "reviews-tasks-outbound-v1"
	RspDataCollectorApplicationV1               OTLName = "rsp-data-collector-application-v1"
	SalesforceInternalServiceApplicationV1      OTLName = "salesforce-internal-service-application-v1"
	SalesforceProxyServiceApplicationV1         OTLName = "salesforce-proxy-service-application-v1"
	SalesforceProxyServiceRequestV1             OTLName = "salesforce-proxy-service-request-v1"
	SearchResultsV1                             OTLName = "search-results-v1"
	SearchV1                                    OTLName = "search-v1"
	SensuEventLogsV3                            OTLName = "sensu-event-logs-v3"
	ServiceTaxcalculationApplicationV1          OTLName = "service-taxcalculation-application-v1"
	ServiceTaxcalculationRequestV1              OTLName = "service-taxcalculation-request-v1"
	SidecarCaptainV1                            OTLName = "sidecar-captain-v1"
	SidecarClientRemoteMessageV1                OTLName = "sidecar-client-remote-message-v1"
	SousCacheMessageV1                          OTLName = "sous-cache-message-v1"
	SousCliV1                                   OTLName = "sous-cli-v1"
	SousDeploymentDiff                          OTLName = "sous-deployment-diff"
	SousDeploymentV1                            OTLName = "sous-deployment-v1"
	SousDiffResolution                          OTLName = "sous-diff-resolution"
	SousErrorV1                                 OTLName = "sous-error-v1"
	SousGenericV1                               OTLName = "sous-generic-v1"
	SousGraphiteConfigV1                        OTLName = "sous-graphite-config-v1"
	SousHttpV1                                  OTLName = "sous-http-v1"
	SousIntervalV1                              OTLName = "sous-interval-v1"
	SousKafkaConfigV1                           OTLName = "sous-kafka-config-v1"
	SousPollingSubresultV1                      OTLName = "sous-polling-subresult-v1"
	SousRectifierSingularityV1                  OTLName = "sous-rectifier-singularity-v1"
	SousResolutionResultV1                      OTLName = "sous-resolution-result-v1"
	SousResolveFilterV1                         OTLName = "sous-resolve-filter-v1"
	SousSql                                     OTLName = "sous-sql"
	SousStatusPollingV1                         OTLName = "sous-status-polling-v1"
	SousUniversalV1                             OTLName = "sous-universal-v1"
	SousUpdateV1                                OTLName = "sous-update-v1"
	SyncProxyApplicationV1                      OTLName = "sync-proxy-application-v1"
	SyncProxyFieldsV1                           OTLName = "sync-proxy-fields-v1"
	SyncProxyRequestV1                          OTLName = "sync-proxy-request-v1"
	Testing                                     OTLName = "testing"
	TextModerationServiceV1                     OTLName = "text-moderation-service-v1"
	TicketingExperienceCrud                     OTLName = "ticketing-experience-crud"
	TicketingTransactionExternalServiceRequest  OTLName = "ticketing-transaction-external-service-request"
	TicketingTransactionRequestLog              OTLName = "ticketing-transaction-request-log"
	TimerV1                                     OTLName = "timer-v1"
	TimezoneApiCommonV1                         OTLName = "timezone-api-common-v1"
	TimezoneApiMessageV1                        OTLName = "timezone-api-message-v1"
	TimezoneApiRequestBeginV1                   OTLName = "timezone-api-request-begin-v1"
	TimezoneApiRequestCommonV1                  OTLName = "timezone-api-request-common-v1"
	TimezoneApiRequestEndV1                     OTLName = "timezone-api-request-end-v1"
	TimezonesApiMsgV1                           OTLName = "timezones-api-msg-v1"
	TimezonesApiRequestV1                       OTLName = "timezones-api-request-v1"
	TmsApiExceptionV1                           OTLName = "tms-api-exception-v1"
	TmsApiV1                                    OTLName = "tms-api-v1"
	TmsArchiverV1                               OTLName = "tms-archiver-v1"
	TmsCommonV1                                 OTLName = "tms-common-v1"
	TmsComposerV1                               OTLName = "tms-composer-v1"
	TmsDispatcherV1                             OTLName = "tms-dispatcher-v1"
	TmsEventExceptionV1                         OTLName = "tms-event-exception-v1"
	TmsExceptionV1                              OTLName = "tms-exception-v1"
	TmsIrisApplicationV1                        OTLName = "tms-iris-application-v1"
	TmsIrisRequestV1                            OTLName = "tms-iris-request-v1"
	TmsMessageQueueV1                           OTLName = "tms-message-queue-v1"
	TmsOcComponentsV1                           OTLName = "tms-oc-components-v1"
	TmsOutgoingRequestV1                        OTLName = "tms-outgoing-request-v1"
	TmsPingV1                                   OTLName = "tms-ping-v1"
	TmsRequeueTicketsTaskV1                     OTLName = "tms-requeue-tickets-task-v1"
	TmsReservationDetailsV1                     OTLName = "tms-reservation-details-v1"
	TmsReservationReconfirmationV1              OTLName = "tms-reservation-reconfirmation-v1"
	TmsSenderServiceCoreApplicationV1           OTLName = "tms-sender-service-core-application-v1"
	TmsSenderServiceCoreRequestV1               OTLName = "tms-sender-service-core-request-v1"
	TmsSenderV1                                 OTLName = "tms-sender-v1"
	TmsSgeventsV1                               OTLName = "tms-sgevents-v1"
	TmsSyncTaskV1                               OTLName = "tms-sync-task-v1"
	UberTripExperiencesApplicationV1            OTLName = "uber-trip-experiences-application-v1"
	UberTripExperiencesRequestV1                OTLName = "uber-trip-experiences-request-v1"
	UmamiPartnerServiceV1                       OTLName = "umami-partner-service-v1"
	UserauthenticationApplicationV3             OTLName = "userauthentication-application-v3"
	UserauthenticationCallmetricsV3             OTLName = "userauthentication-callmetrics-v3"
	UserauthenticationRequestV3                 OTLName = "userauthentication-request-v3"
	UserauthenticationTokenvalidationV3         OTLName = "userauthentication-tokenvalidation-v3"
	UserServiceApplicationV1                    OTLName = "user-service-application-v1"
	UserServiceRequestV1                        OTLName = "user-service-request-v1"
	UserSiteCommonV1                            OTLName = "user-site-common-v1"
	UserSiteExceptionV1                         OTLName = "user-site-exception-v1"
	UserSiteHttpRequestV1                       OTLName = "user-site-http-request-v1"
	UserSyncServiceApplicationV1                OTLName = "user-sync-service-application-v1"
	VenueApplication                            OTLName = "venue-application"
	WebsiteObiComV1                             OTLName = "website-obi-com-v1"
)

func (OTLName) EachField

func (n OTLName) EachField(f FieldReportFn)

EachField implements EachFielder on OTLName.

type OldLogMessage

type OldLogMessage interface {
	// The severity level of this message, potentially (in the future) manipulated
	// by dynamic rules.
	DefaultLevel() Level
	// A simple textual message describing the logged event. Usually hardcoded (or almost so.)
	Message() string
}

OldLogMessage captures a deprecated interface prefer instead to use EachFielder and include Severity and Message fields. Don't do both though; make a clean break with this interface.

type Submessage

type Submessage interface {
	EachFielder
	LevelRecommender
}

Submessage is not a complete message on its own

type Timer

type Timer interface {
	Time(func())
	Update(time.Duration)
	UpdateSince(time.Time)
}

Timer is a write-only interface over a timer.

type ToConsole

type ToConsole struct {
	// contains filtered or unexported fields
}

ToConsole allows quick creation of Console messages.

func Console

func Console(m interface{}) ToConsole

Console marks a string as being suitable for console output.

func (ToConsole) WriteToConsole

func (tc ToConsole) WriteToConsole(c io.Writer)

WriteToConsole implements ConsoleMessage on ToConsole.

type Updater

type Updater interface {
	Update(int64)
}

Updater is a generalization of write-only metrics - integers that can be set. e.g. simple gauges or analyzed samples etc.

type WriteDoner

type WriteDoner interface {
	io.Writer
	Done()
}

WriteDoner is like a WriteCloser, but the Done message also asserts that something useful was written After a console message has been written, the Done method is called, so that the WriteDoner can report about badly formed or missing console messages. xxx this facility is preliminary, and Sous doesn't yet record these errors.

func NewWriteDonerSpy

func NewWriteDonerSpy() (WriteDoner, writeDonerController)

NewWriteDonerSpy returns a spy/controller pair for WriteDoner

Directories

Path Synopsis
Package messages collects logging messages for Sous.
Package messages collects logging messages for Sous.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL