parent
9c8fbb2202
commit
62074965ee
@ -4,6 +4,17 @@ import "context"
|
|||||||
|
|
||||||
type loggerKey struct{}
|
type loggerKey struct{}
|
||||||
|
|
||||||
|
// MustContext returns logger from passed context or DefaultLogger if empty
|
||||||
|
func MustContext(ctx context.Context) Logger {
|
||||||
|
if ctx == nil {
|
||||||
|
return DefaultLogger
|
||||||
|
}
|
||||||
|
if l, ok := ctx.Value(loggerKey{}).(Logger); ok && l != nil {
|
||||||
|
return l
|
||||||
|
}
|
||||||
|
return DefaultLogger
|
||||||
|
}
|
||||||
|
|
||||||
// FromContext returns logger from passed context
|
// FromContext returns logger from passed context
|
||||||
func FromContext(ctx context.Context) (Logger, bool) {
|
func FromContext(ctx context.Context) (Logger, bool) {
|
||||||
if ctx == nil {
|
if ctx == nil {
|
||||||
|
@ -6,6 +6,8 @@ import (
|
|||||||
"log/slog"
|
"log/slog"
|
||||||
"os"
|
"os"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"go.unistack.org/micro/v3/meter"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Option func signature
|
// Option func signature
|
||||||
@ -45,6 +47,8 @@ type Options struct {
|
|||||||
Level Level
|
Level Level
|
||||||
// TimeFunc used to obtain current time
|
// TimeFunc used to obtain current time
|
||||||
TimeFunc func() time.Time
|
TimeFunc func() time.Time
|
||||||
|
// Meter used to count logs for specific level
|
||||||
|
Meter meter.Meter
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewOptions creates new options struct
|
// NewOptions creates new options struct
|
||||||
@ -58,6 +62,7 @@ func NewOptions(opts ...Option) Options {
|
|||||||
ContextAttrFuncs: DefaultContextAttrFuncs,
|
ContextAttrFuncs: DefaultContextAttrFuncs,
|
||||||
AddSource: true,
|
AddSource: true,
|
||||||
TimeFunc: time.Now,
|
TimeFunc: time.Now,
|
||||||
|
Meter: meter.DefaultMeter,
|
||||||
}
|
}
|
||||||
|
|
||||||
WithMicroKeys()(&options)
|
WithMicroKeys()(&options)
|
||||||
|
@ -11,6 +11,7 @@ import (
|
|||||||
"sync"
|
"sync"
|
||||||
|
|
||||||
"go.unistack.org/micro/v3/logger"
|
"go.unistack.org/micro/v3/logger"
|
||||||
|
"go.unistack.org/micro/v3/semconv"
|
||||||
"go.unistack.org/micro/v3/tracer"
|
"go.unistack.org/micro/v3/tracer"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -150,6 +151,7 @@ func (s *slogLogger) Init(opts ...logger.Option) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (s *slogLogger) Log(ctx context.Context, lvl logger.Level, attrs ...interface{}) {
|
func (s *slogLogger) Log(ctx context.Context, lvl logger.Level, attrs ...interface{}) {
|
||||||
|
s.opts.Meter.Counter(semconv.LoggerMessageTotal, "level", lvl.String()).Inc()
|
||||||
if !s.V(lvl) {
|
if !s.V(lvl) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -189,6 +191,7 @@ func (s *slogLogger) Log(ctx context.Context, lvl logger.Level, attrs ...interfa
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (s *slogLogger) Logf(ctx context.Context, lvl logger.Level, msg string, attrs ...interface{}) {
|
func (s *slogLogger) Logf(ctx context.Context, lvl logger.Level, msg string, attrs ...interface{}) {
|
||||||
|
s.opts.Meter.Counter(semconv.LoggerMessageTotal, "level", lvl.String()).Inc()
|
||||||
if !s.V(lvl) {
|
if !s.V(lvl) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -228,6 +231,7 @@ func (s *slogLogger) Logf(ctx context.Context, lvl logger.Level, msg string, att
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (s *slogLogger) Info(ctx context.Context, attrs ...interface{}) {
|
func (s *slogLogger) Info(ctx context.Context, attrs ...interface{}) {
|
||||||
|
s.opts.Meter.Counter(semconv.LoggerMessageTotal, "level", logger.InfoLevel.String()).Inc()
|
||||||
if !s.V(logger.InfoLevel) {
|
if !s.V(logger.InfoLevel) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -249,6 +253,7 @@ func (s *slogLogger) Info(ctx context.Context, attrs ...interface{}) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (s *slogLogger) Infof(ctx context.Context, msg string, attrs ...interface{}) {
|
func (s *slogLogger) Infof(ctx context.Context, msg string, attrs ...interface{}) {
|
||||||
|
s.opts.Meter.Counter(semconv.LoggerMessageTotal, "level", logger.InfoLevel.String()).Inc()
|
||||||
if !s.V(logger.InfoLevel) {
|
if !s.V(logger.InfoLevel) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -270,6 +275,7 @@ func (s *slogLogger) Infof(ctx context.Context, msg string, attrs ...interface{}
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (s *slogLogger) Debug(ctx context.Context, attrs ...interface{}) {
|
func (s *slogLogger) Debug(ctx context.Context, attrs ...interface{}) {
|
||||||
|
s.opts.Meter.Counter(semconv.LoggerMessageTotal, "level", logger.DebugLevel.String()).Inc()
|
||||||
if !s.V(logger.DebugLevel) {
|
if !s.V(logger.DebugLevel) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -291,6 +297,7 @@ func (s *slogLogger) Debug(ctx context.Context, attrs ...interface{}) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (s *slogLogger) Debugf(ctx context.Context, msg string, attrs ...interface{}) {
|
func (s *slogLogger) Debugf(ctx context.Context, msg string, attrs ...interface{}) {
|
||||||
|
s.opts.Meter.Counter(semconv.LoggerMessageTotal, "level", logger.DebugLevel.String()).Inc()
|
||||||
if !s.V(logger.DebugLevel) {
|
if !s.V(logger.DebugLevel) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -312,6 +319,7 @@ func (s *slogLogger) Debugf(ctx context.Context, msg string, attrs ...interface{
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (s *slogLogger) Trace(ctx context.Context, attrs ...interface{}) {
|
func (s *slogLogger) Trace(ctx context.Context, attrs ...interface{}) {
|
||||||
|
s.opts.Meter.Counter(semconv.LoggerMessageTotal, "level", logger.TraceLevel.String()).Inc()
|
||||||
if !s.V(logger.TraceLevel) {
|
if !s.V(logger.TraceLevel) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -333,6 +341,7 @@ func (s *slogLogger) Trace(ctx context.Context, attrs ...interface{}) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (s *slogLogger) Tracef(ctx context.Context, msg string, attrs ...interface{}) {
|
func (s *slogLogger) Tracef(ctx context.Context, msg string, attrs ...interface{}) {
|
||||||
|
s.opts.Meter.Counter(semconv.LoggerMessageTotal, "level", logger.TraceLevel.String()).Inc()
|
||||||
if !s.V(logger.TraceLevel) {
|
if !s.V(logger.TraceLevel) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -354,6 +363,7 @@ func (s *slogLogger) Tracef(ctx context.Context, msg string, attrs ...interface{
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (s *slogLogger) Error(ctx context.Context, attrs ...interface{}) {
|
func (s *slogLogger) Error(ctx context.Context, attrs ...interface{}) {
|
||||||
|
s.opts.Meter.Counter(semconv.LoggerMessageTotal, "level", logger.ErrorLevel.String()).Inc()
|
||||||
if !s.V(logger.ErrorLevel) {
|
if !s.V(logger.ErrorLevel) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -393,6 +403,7 @@ func (s *slogLogger) Error(ctx context.Context, attrs ...interface{}) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (s *slogLogger) Errorf(ctx context.Context, msg string, attrs ...interface{}) {
|
func (s *slogLogger) Errorf(ctx context.Context, msg string, attrs ...interface{}) {
|
||||||
|
s.opts.Meter.Counter(semconv.LoggerMessageTotal, "level", logger.ErrorLevel.String()).Inc()
|
||||||
if !s.V(logger.ErrorLevel) {
|
if !s.V(logger.ErrorLevel) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -432,6 +443,7 @@ func (s *slogLogger) Errorf(ctx context.Context, msg string, attrs ...interface{
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (s *slogLogger) Fatal(ctx context.Context, attrs ...interface{}) {
|
func (s *slogLogger) Fatal(ctx context.Context, attrs ...interface{}) {
|
||||||
|
s.opts.Meter.Counter(semconv.LoggerMessageTotal, "level", logger.FatalLevel.String()).Inc()
|
||||||
if !s.V(logger.FatalLevel) {
|
if !s.V(logger.FatalLevel) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -454,6 +466,7 @@ func (s *slogLogger) Fatal(ctx context.Context, attrs ...interface{}) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (s *slogLogger) Fatalf(ctx context.Context, msg string, attrs ...interface{}) {
|
func (s *slogLogger) Fatalf(ctx context.Context, msg string, attrs ...interface{}) {
|
||||||
|
s.opts.Meter.Counter(semconv.LoggerMessageTotal, "level", logger.FatalLevel.String()).Inc()
|
||||||
if !s.V(logger.FatalLevel) {
|
if !s.V(logger.FatalLevel) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -476,6 +489,7 @@ func (s *slogLogger) Fatalf(ctx context.Context, msg string, attrs ...interface{
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (s *slogLogger) Warn(ctx context.Context, attrs ...interface{}) {
|
func (s *slogLogger) Warn(ctx context.Context, attrs ...interface{}) {
|
||||||
|
s.opts.Meter.Counter(semconv.LoggerMessageTotal, "level", logger.WarnLevel.String()).Inc()
|
||||||
if !s.V(logger.WarnLevel) {
|
if !s.V(logger.WarnLevel) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -497,6 +511,7 @@ func (s *slogLogger) Warn(ctx context.Context, attrs ...interface{}) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (s *slogLogger) Warnf(ctx context.Context, msg string, attrs ...interface{}) {
|
func (s *slogLogger) Warnf(ctx context.Context, msg string, attrs ...interface{}) {
|
||||||
|
s.opts.Meter.Counter(semconv.LoggerMessageTotal, "level", logger.WarnLevel.String()).Inc()
|
||||||
if !s.V(logger.WarnLevel) {
|
if !s.V(logger.WarnLevel) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -2,8 +2,6 @@ package meter
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
|
||||||
"go.unistack.org/micro/v3/logger"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// Option powers the configuration for metrics implementations:
|
// Option powers the configuration for metrics implementations:
|
||||||
@ -11,8 +9,6 @@ type Option func(*Options)
|
|||||||
|
|
||||||
// Options for metrics implementations
|
// Options for metrics implementations
|
||||||
type Options struct {
|
type Options struct {
|
||||||
// Logger used for logging
|
|
||||||
Logger logger.Logger
|
|
||||||
// Context holds external options
|
// Context holds external options
|
||||||
Context context.Context
|
Context context.Context
|
||||||
// Name holds the meter name
|
// Name holds the meter name
|
||||||
@ -39,7 +35,6 @@ func NewOptions(opt ...Option) Options {
|
|||||||
Address: DefaultAddress,
|
Address: DefaultAddress,
|
||||||
Path: DefaultPath,
|
Path: DefaultPath,
|
||||||
Context: context.Background(),
|
Context: context.Background(),
|
||||||
Logger: logger.DefaultLogger,
|
|
||||||
MetricPrefix: DefaultMetricPrefix,
|
MetricPrefix: DefaultMetricPrefix,
|
||||||
LabelPrefix: DefaultLabelPrefix,
|
LabelPrefix: DefaultLabelPrefix,
|
||||||
}
|
}
|
||||||
@ -95,13 +90,6 @@ func TimingObjectives(value map[float64]float64) Option {
|
|||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// Logger sets the logger
|
|
||||||
func Logger(l logger.Logger) Option {
|
|
||||||
return func(o *Options) {
|
|
||||||
o.Logger = l
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Labels sets the meter labels
|
// Labels sets the meter labels
|
||||||
func Labels(ls ...string) Option {
|
func Labels(ls ...string) Option {
|
||||||
return func(o *Options) {
|
return func(o *Options) {
|
||||||
|
4
semconv/logger.go
Normal file
4
semconv/logger.go
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
package semconv
|
||||||
|
|
||||||
|
// LoggerMessageTotal specifies meter metric name for logger messages
|
||||||
|
var LoggerMessageTotal = "logger_message_total"
|
Loading…
Reference in New Issue
Block a user