Documentation ¶
Index ¶
- Constants
- func Close()
- func Debugf(ctx context.Context, f string, args ...interface{})
- func Errorf(ctx context.Context, f string, args ...interface{})
- func Fatalf(ctx context.Context, f string, args ...interface{})
- func GetTenantID(ctx context.Context) uuid.UUID
- func Hostname() string
- func IncrementEvent(ctx context.Context, eventName string)
- func IncrementEventWithPayload(ctx context.Context, eventName string, payload string)
- func Infof(ctx context.Context, f string, args ...interface{})
- func InitForService(name service.Service, transports []Transport, fetcher EventMetadataFetcher)
- func InitForTools(ctx context.Context, toolName string, fileLogName string, ...)
- func Log(ctx context.Context, event LogEvent)
- func PreInit(transports []Transport)
- func Verbosef(ctx context.Context, f string, args ...interface{})
- func Warningf(ctx context.Context, f string, args ...interface{})
- type EventCategory
- type EventCode
- type EventMetadataFetcher
- type EventMetadataMap
- type LocalStatus
- type LogEvent
- type LogEventTypeInfo
- type LogLevel
- type LogRecordArray
- type LogRecordContent
- type LogTransportStats
- type Transport
- type TransportConfig
Constants ¶
const EventNameNone string = "System.unused"
EventNameNone is name of default non counter logging event i.e. message only
const EventNameUnknown string = "System.unknown"
EventNameUnknown is name of default event which is not found in the map
Variables ¶
This section is empty.
Functions ¶
func Debugf ¶
Debugf logs a string with optional format-string parsing by default these are internal-to-Userclouds logs
func GetTenantID ¶
GetTenantID always returns uuid.Nil since SDK relies on the tenantID specified at initialization time
func Hostname ¶
func Hostname() string
Hostname centralizes our code to figure out what machine we're on TODO: this isn't the right place for this to live, but the wrong code already got copy-pasted across logging so at least this will start the fix. It could be in the service package but that ends up importing migrate -> uclog and I don't want to untangle that right now. GetStatus shouldn't live in uclog either but add it to the list. :)
func IncrementEvent ¶
IncrementEvent records a UserClouds event without message or payload
func IncrementEventWithPayload ¶
IncrementEventWithPayload logs event related to security that carry a payload
func InitForService ¶
func InitForService(name service.Service, transports []Transport, fetcher EventMetadataFetcher)
InitForService sets up logging transports for long running serving
func InitForTools ¶
InitForTools configures logging to the screen and file if desired for a tool
func PreInit ¶
func PreInit(transports []Transport)
PreInit sets up logging to the screen before config file was read
Types ¶
type EventCategory ¶
type EventCategory string
EventCategory identifies the category of the event
const ( EventCategoryUnknown EventCategory = "Unknown" EventCategorySystem EventCategory = "System" EventCategoryCall EventCategory = "Call" EventCategoryDuration EventCategory = "Duration" EventCategoryInputError EventCategory = "InputError" EventCategoryInternalError EventCategory = "InternalError" EventCategoryResultSuccess EventCategory = "ResultSuccess" EventCategoryResultFailure EventCategory = "ResultFailure" EventCategoryCount EventCategory = "Count" EventCategoryTODO EventCategory = "TODO" // these are auto-generated events that need classified )
Different event categories
type EventMetadataFetcher ¶
type EventMetadataFetcher interface { Init(updateHandler func(updatedMap *EventMetadataMap, tenantID uuid.UUID) error) error FetchEventMetadataForTenant(tenantID uuid.UUID) Close() }
EventMetadataFetcher knows how to get the event metadata map
type EventMetadataMap ¶
type EventMetadataMap struct { Version int Map map[string]LogEventTypeInfo }
EventMetadataMap is contains information about a particular event type
type LocalStatus ¶
type LocalStatus struct { CallCount int `json:"callcount"` // total calls received by the service InputErrorCount int `json:"input_errorcount"` // number of input errors InternalErrorCount int `json:"internal_errorcount"` // number of internal errors LastCall time.Time `json:"lastcall_time"` // timestamp of last successful call LastErrorCall time.Time `json:"lasterror_time"` // timestamp of last error LastErrorCode int `json:"lasterror_code"` // last error code ComputeTime int `json:"computetime"` // amount of time spent in handlers LoggerStats []LogTransportStats `json:"loggerstats"` }
LocalStatus contains basic approximate statistics about the service
func GetStatus ¶
func GetStatus() LocalStatus
GetStatus return approximate statistics about the service
type LogEvent ¶
type LogEvent struct { LogLevel LogLevel // Level of logging Error - Warning - Debug - Info Name string // String name of the event Code EventCode // Unique code for this event of this type Count int // Reporting multiple events at once Message string // Message associated with the event Payload string // Optional payload associated with a counter event RequestID uuid.UUID // Request ID if this event is associated with a request (nil otherwise) UserAgent string // User-Agent header from the request // Identity of the sender TenantID uuid.UUID }
LogEvent is a structured event that is passed to the logger to be recorded
type LogEventTypeInfo ¶
type LogEventTypeInfo struct { Name string NormalizedName string Code EventCode Service service.Service URL string Ignore bool // Don't send event to the server (only process locally) Category EventCategory Subcategory string }
LogEventTypeInfo is contains information about a particular event type
func GetEventInfo ¶ added in v1.6.1
func GetEventInfo(event LogEvent) LogEventTypeInfo
GetEventInfo returns the event type information for a given event
type LogLevel ¶
type LogLevel int
LogLevel represent the urgency level of the logging event
const ( LogLevelNone LogLevel = -1 LogLevelNonMessage LogLevel = 0 LogLevelError LogLevel = 1 LogLevelWarning LogLevel = 2 LogLevelInfo LogLevel = 3 LogLevelDebug LogLevel = 4 LogLevelVerbose LogLevel = 5 )
Different log levels
func GetLogLevel ¶ added in v0.8.1
GetLogLevel returns the log level for a given string log level name
type LogRecordArray ¶
type LogRecordArray struct { Service service.Service `json:"s"` TenantID uuid.UUID `json:"t"` Region region.MachineRegion `json:"r"` Host string `json:"h"` Records []LogRecordContent `json:"c"` }
LogRecordArray represents a set of log messages/events from a same service/tenant/region/host combination It is used for on the wire representation
type LogRecordContent ¶
type LogRecordContent struct { Message string `json:"m"` Code EventCode `json:"c"` Payload string `json:"p"` Timestamp int `json:"t"` }
LogRecordContent represents unique information in log event/message for a fixed service/tenant/region/host combination It is used for on the wire representation
type LogTransportStats ¶
type LogTransportStats struct { Name string QueueSize int64 DroppedEventCount int64 SentEventCount int64 FailedAPICallsCount int64 }
LogTransportStats contains statistics about transport operation
func GetStats ¶
func GetStats() []LogTransportStats
GetStats returns the stats for each of the transports
type Transport ¶
type Transport interface { Init() (*TransportConfig, error) Write(ctx context.Context, event LogEvent) GetStats() LogTransportStats GetName() string Flush() error Close() }
Transport defines the interface loggers implement
type TransportConfig ¶
type TransportConfig struct { Required bool `yaml:"required" json:"required"` MaxLogLevel LogLevel `yaml:"max_log_level" json:"max_log_level"` }
TransportConfig defines the shared config for log transports