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) }
Output:
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