Documentation ¶
Overview ¶
Package streamlog provides a non-blocking message broadcaster.
Index ¶
- Constants
- Variables
- func GetFormatter(logger *StreamLogger) func(url.Values, interface{}) string
- type Formatter
- type StreamLogger
- func (logger *StreamLogger) LogToFile(path string, messageFmt func(url.Values, interface{}) string) (chan interface{}, error)
- func (logger *StreamLogger) Name() string
- func (logger *StreamLogger) Send(message interface{})
- func (logger *StreamLogger) ServeLogs(url string, messageFmt func(url.Values, interface{}) string)
- func (logger *StreamLogger) Subscribe(name string) chan interface{}
- func (logger *StreamLogger) Unsubscribe(ch chan interface{})
Constants ¶
const ( // QueryLogFormatText is the format specifier for text querylog output QueryLogFormatText = "text" // QueryLogFormatJSON is the format specifier for json querylog output QueryLogFormatJSON = "json" )
Variables ¶
var ( // RedactDebugUIQueries controls whether full queries and bind variables are suppressed from debug UIs. RedactDebugUIQueries = flag.Bool("redact-debug-ui-queries", false, "redact full queries and bind variables from debug UI") // QueryLogFormat controls the format of the query log (either text or json) QueryLogFormat = flag.String("querylog-format", "text", "format for query logs (\"text\" or \"json\")") )
Functions ¶
func GetFormatter ¶
func GetFormatter(logger *StreamLogger) func(url.Values, interface{}) string
GetFormatter returns a formatter function for objects conforming to the Formatter interface
Types ¶
type Formatter ¶
Formatter is a simple interface for objects that expose a Format function as needed for streamlog.
type StreamLogger ¶
type StreamLogger struct {
// contains filtered or unexported fields
}
StreamLogger is a non-blocking broadcaster of messages. Subscribers can use channels or HTTP.
func New ¶
func New(name string, size int) *StreamLogger
New returns a new StreamLogger that can stream events to subscribers. The size parameter defines the channel size for the subscribers.
func (*StreamLogger) LogToFile ¶
func (logger *StreamLogger) LogToFile(path string, messageFmt func(url.Values, interface{}) string) (chan interface{}, error)
LogToFile starts logging to the specified file path and will reopen the file in response to SIGUSR2.
Returns the channel used for the subscription which can be used to close it.
func (*StreamLogger) Name ¶
func (logger *StreamLogger) Name() string
Name returns the name of StreamLogger.
func (*StreamLogger) Send ¶
func (logger *StreamLogger) Send(message interface{})
Send sends message to all the writers subscribed to logger. Calling Send does not block.
func (*StreamLogger) ServeLogs ¶
func (logger *StreamLogger) ServeLogs(url string, messageFmt func(url.Values, interface{}) string)
ServeLogs registers the URL on which messages will be broadcast. It is safe to register multiple URLs for the same StreamLogger.
func (*StreamLogger) Subscribe ¶
func (logger *StreamLogger) Subscribe(name string) chan interface{}
Subscribe returns a channel which can be used to listen for messages.
func (*StreamLogger) Unsubscribe ¶
func (logger *StreamLogger) Unsubscribe(ch chan interface{})
Unsubscribe removes the channel from the subscription.