Documentation
¶
Overview ¶
Package gomoljson is a JSON logger implementation for gomol.
Message order is not guaranteed during reconnection scenarios.
Example ¶
Create a new JSON logger, add it to gomol and log a few messages
// Add a JSON Logger
jsonCfg := NewJSONLoggerConfig("tcp://10.10.10.10:1234")
jsonLogger, _ := NewJSONLogger(jsonCfg)
gomol.AddLogger(jsonLogger)
// Set some global attrs that will be added to all
// messages automatically
gomol.SetAttr("facility", "gomol.example")
gomol.SetAttr("another_attr", 1234)
// Initialize the loggers
gomol.InitLoggers()
defer gomol.ShutdownLoggers()
// Log some debug messages with message-level attrs
// that will be sent only with that message
for idx := 1; idx <= 10; idx++ {
gomol.Dbgm(
gomol.NewAttrs().
SetAttr("msg_attr1", 4321),
"Test message %v", idx)
}
Index ¶
- Variables
- type GomolJsonError
- type JSONLogger
- func (l *JSONLogger) Healthy() bool
- func (l *JSONLogger) InitLogger() error
- func (l *JSONLogger) IsInitialized() bool
- func (l *JSONLogger) Logm(timestamp time.Time, level gomol.LogLevel, attrs map[string]interface{}, ...) error
- func (l *JSONLogger) SetBase(base *gomol.Base)
- func (l *JSONLogger) ShutdownLogger() error
- type JSONLoggerConfig
- type LoggerOption
Examples ¶
Constants ¶
This section is empty.
Variables ¶
var (
ErrDisconnected = newGomolJsonError("disconnected", false, false)
)
Functions ¶
This section is empty.
Types ¶
type GomolJsonError ¶
type GomolJsonError struct {
// contains filtered or unexported fields
}
func (*GomolJsonError) Error ¶
func (gje *GomolJsonError) Error() string
func (*GomolJsonError) Temporary ¶
func (gje *GomolJsonError) Temporary() bool
func (*GomolJsonError) Timeout ¶
func (gje *GomolJsonError) Timeout() bool
type JSONLogger ¶
type JSONLogger struct {
// contains filtered or unexported fields
}
JSONLogger is an instance of a JSON logger
func NewJSONLogger ¶
func NewJSONLogger(config *JSONLoggerConfig) (*JSONLogger, error)
NewJSONLogger creates a new logger with the provided configuration
func (*JSONLogger) Healthy ¶
func (l *JSONLogger) Healthy() bool
Healthy will return true if the logger is connected to the remote host
func (*JSONLogger) InitLogger ¶
func (l *JSONLogger) InitLogger() error
InitLogger does any initialization the logger may need before being used
func (*JSONLogger) IsInitialized ¶
func (l *JSONLogger) IsInitialized() bool
IsInitialized returns whether the logger has already been initialized or not
func (*JSONLogger) Logm ¶
func (l *JSONLogger) Logm(timestamp time.Time, level gomol.LogLevel, attrs map[string]interface{}, msg string) error
Logm sends a JSON log message to the configured host
func (*JSONLogger) SetBase ¶
func (l *JSONLogger) SetBase(base *gomol.Base)
SetBase will set the gomol.Base this logger is associated with
func (*JSONLogger) ShutdownLogger ¶
func (l *JSONLogger) ShutdownLogger() error
ShutdownLogger shuts down the logger and frees any resources that may be used
type JSONLoggerConfig ¶
type JSONLoggerConfig struct {
// A URI for the host to connect to in the format: protocol://host:port. Ex: tcp://10.10.10.10:1234
HostURI string
// DialTimeout is the amount of time the logger will try to connect to the host before timing out
DialTimeout time.Duration
// The delimiter to use at the end of every message sent. Defaults to '\n'
MessageDelimiter []byte
// The prefix to add before every field name in the JSON data. Defaults to a blank string
FieldPrefix string
// A list of field names excluded from having the FieldPrefix added
UnprefixedFields []string
// The name of the JSON field to put the log level into. Defaults to "level"
LogLevelField string
// The name of the JSON field to put the message into. Defaults to "message"
MessageField string
// The name of the JSON field to put the timestamp into. Defaults to "timestamp"
TimestampField string
// A map to customize the values of each gomol.LogLevel in the JSON message.
// Defaults to the string value of each gomol.LogLevel
LogLevelMap map[gomol.LogLevel]interface{}
// A map of additional attributes to be added to each JSON message sent. This is useful
// if there fields to send only to a JSON receiver. These will override any existing
// attributes already set on a message.
JSONAttrs map[string]interface{}
// The number of messages to queue during a connection failure before
// older messages will start being dropped. Defaults to 100
FailureQueueLength int
// Whether an active connection is required on initialization. Defaults to false.
// If true, the Init function will return a nil error on connection failure, but
// retry to connect in the background.
AllowDisconnectedInit bool
// The backoff strategy to use when reconnecting a connection
ReconnectBackoff backoff.Backoff
// contains filtered or unexported fields
}
JSONLoggerConfig is the configuration for a JSONLogger
func NewJSONLoggerConfig ¶
func NewJSONLoggerConfig(hostURI string) *JSONLoggerConfig
NewJSONLoggerConfig creates a new configuration with default settings
type LoggerOption ¶
type LoggerOption func(cfg *JSONLoggerConfig)
func WithDialTimeout ¶
func WithDialTimeout(timeout time.Duration) LoggerOption
WithDialTimeout sets the amount of time the logger will try to connect to the host before timing out