本文整理汇总了Golang中github.com/go-kit/kit/log.Logger类的典型用法代码示例。如果您正苦于以下问题:Golang Logger类的具体用法?Golang Logger怎么用?Golang Logger使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了Logger类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Golang代码示例。
示例1: main
func main() {
// `package log` domain
var logger kitlog.Logger
logger = kitlog.NewLogfmtLogger(os.Stderr)
logger = kitlog.NewContext(logger).With("ts", kitlog.DefaultTimestampUTC)
stdlog.SetOutput(kitlog.NewStdlibAdapter(logger)) // redirect stdlib logging to us
stdlog.SetFlags(0) // flags are handled in our logger
// read configuration from environment
c, err := config.LoadConfiguration()
if err != nil {
logger.Log("fatal", err.Error())
return
}
// Mechanical stuff
rand.Seed(time.Now().UnixNano())
root := context.Background()
errc := make(chan error)
go func() {
errc <- interrupt()
}()
// Start bindings
binding.StartApplicationSQSConsumer(logger, root, errc, c)
binding.StartHealthCheckHTTPListener(logger, root, errc, c)
logger.Log("fatal", <-errc)
}
开发者ID:skidder,项目名称:streammarker-writer,代码行数:30,代码来源:writer.go
示例2: NewPublisherDetailed
// NewPublisherDetailed is the same as NewPublisher, but allows users to provide
// an explicit lookup refresh ticker instead of a TTL, and specify the function
// used to perform lookups instead of using net.LookupSRV.
func NewPublisherDetailed(
name string,
refreshTicker *time.Ticker,
lookupSRV func(service, proto, name string) (cname string, addrs []*net.SRV, err error),
factory loadbalancer.Factory,
logger log.Logger,
) *Publisher {
p := &Publisher{
name: name,
cache: loadbalancer.NewEndpointCache(factory, logger),
logger: logger,
quit: make(chan struct{}),
}
instances, err := p.resolve(lookupSRV)
if err == nil {
logger.Log("name", name, "instances", len(instances))
} else {
logger.Log("name", name, "err", err)
}
p.cache.Replace(instances)
go p.loop(refreshTicker, lookupSRV)
return p
}
开发者ID:qband,项目名称:down,代码行数:28,代码来源:publisher.go
示例3: loggingMiddlware
func loggingMiddlware(l log.Logger) endpoint.Middleware {
return func(next endpoint.Endpoint) endpoint.Endpoint {
return func(ctx context.Context, request interface{}) (result interface{}, err error) {
var req, resp string
defer func(b time.Time) {
l.Log(
"path", ctx.Value(pathKey),
"request", req,
"result", resp,
"err", err,
"request_id", ctx.Value(requestIDKey),
"elapsed", time.Since(b),
)
}(time.Now())
if r, ok := request.(fmt.Stringer); ok {
req = r.String()
}
result, err = next(ctx, request)
if r, ok := result.(fmt.Stringer); ok {
resp = r.String()
}
return
}
}
}
开发者ID:heroku-examples,项目名称:go-kit-ex1,代码行数:26,代码来源:logging.go
示例4: NewSubscriberDetailed
// NewSubscriberDetailed is the same as NewSubscriber, but allows users to
// provide an explicit lookup refresh ticker instead of a TTL, and specify the
// lookup function instead of using net.LookupSRV.
func NewSubscriberDetailed(
name string,
refresh *time.Ticker,
lookup Lookup,
factory sd.Factory,
logger log.Logger,
) *Subscriber {
p := &Subscriber{
name: name,
cache: cache.New(factory, logger),
logger: logger,
quit: make(chan struct{}),
}
instances, err := p.resolve(lookup)
if err == nil {
logger.Log("name", name, "instances", len(instances))
} else {
logger.Log("name", name, "err", err)
}
p.cache.Update(instances)
go p.loop(refresh, lookup)
return p
}
开发者ID:crezam,项目名称:kit,代码行数:28,代码来源:subscriber.go
示例5: NewPublisher
// NewPublisher returns a ZooKeeper publisher. ZooKeeper will start watching the
// given path for changes and update the Publisher endpoints.
func NewPublisher(c Client, path string, f loadbalancer.Factory, logger log.Logger) (*Publisher, error) {
p := &Publisher{
client: c,
path: path,
cache: loadbalancer.NewEndpointCache(f, logger),
logger: logger,
quit: make(chan struct{}),
}
err := p.client.CreateParentNodes(p.path)
if err != nil {
return nil, err
}
// intial node retrieval and cache fill
instances, eventc, err := p.client.GetEntries(p.path)
if err != nil {
logger.Log("path", p.path, "msg", "failed to retrieve entries", "err", err)
return nil, err
}
logger.Log("path", p.path, "instances", len(instances))
p.cache.Replace(instances)
// handle incoming path updates
go p.loop(eventc)
return p, nil
}
开发者ID:EasonLiao,项目名称:kit,代码行数:30,代码来源:publisher.go
示例6: ToHTTPRequest
// ToHTTPRequest returns an http RequestFunc that injects an OpenTracing Span
// found in `ctx` into the http headers. If no such Span can be found, the
// RequestFunc is a noop.
func ToHTTPRequest(tracer opentracing.Tracer, logger log.Logger) kithttp.RequestFunc {
return func(ctx context.Context, req *http.Request) context.Context {
// Try to find a Span in the Context.
if span := opentracing.SpanFromContext(ctx); span != nil {
// Add standard OpenTracing tags.
ext.HTTPMethod.Set(span, req.URL.RequestURI())
host, portString, err := net.SplitHostPort(req.URL.Host)
if err == nil {
ext.PeerHostname.Set(span, host)
if port, err := strconv.Atoi(portString); err != nil {
ext.PeerPort.Set(span, uint16(port))
}
} else {
ext.PeerHostname.Set(span, req.URL.Host)
}
// There's nothing we can do with any errors here.
if err = tracer.Inject(
span.Context(),
opentracing.TextMap,
opentracing.HTTPHeadersCarrier(req.Header),
); err != nil {
logger.Log("err", err)
}
}
return ctx
}
}
开发者ID:basvanbeek,项目名称:kit,代码行数:31,代码来源:http.go
示例7: checkAll
func (a *Automator) checkAll(errorLogger log.Logger) {
insts, err := a.cfg.InstanceDB.All()
if err != nil {
errorLogger.Log("err", err)
return
}
for _, inst := range insts {
for service, conf := range inst.Config.Services {
if conf.Policy() != flux.PolicyAutomated {
continue
}
_, err := a.cfg.Jobs.PutJob(inst.ID, jobs.Job{
// Key stops us getting two jobs for the same service
Key: strings.Join([]string{
jobs.AutomatedServiceJob,
string(inst.ID),
string(service),
}, "|"),
Method: jobs.AutomatedServiceJob,
Priority: jobs.PriorityBackground,
Params: jobs.AutomatedServiceJobParams{
ServiceSpec: flux.ServiceSpec(service),
},
})
if err != nil && err != jobs.ErrJobAlreadyQueued {
errorLogger.Log("err", errors.Wrapf(err, "queueing automated service job"))
}
}
}
}
开发者ID:weaveworks,项目名称:flux,代码行数:30,代码来源:automator.go
示例8: NewPublisher
// NewPublisher returns a Consul publisher which returns Endpoints for the
// requested service. It only returns instances for which all of the passed
// tags are present.
func NewPublisher(
client Client,
factory loadbalancer.Factory,
logger log.Logger,
service string,
tags ...string,
) (*Publisher, error) {
p := &Publisher{
cache: loadbalancer.NewEndpointCache(factory, logger),
client: client,
logger: logger,
service: service,
tags: tags,
quitc: make(chan struct{}),
}
instances, index, err := p.getInstances(defaultIndex)
if err == nil {
logger.Log("service", service, "tags", strings.Join(tags, ", "), "instances", len(instances))
} else {
logger.Log("service", service, "tags", strings.Join(tags, ", "), "err", err)
}
p.cache.Replace(instances)
go p.loop(index)
return p, nil
}
开发者ID:cnicolov,项目名称:kit,代码行数:31,代码来源:publisher.go
示例9: NewSubscriber
// NewSubscriber returns a ZooKeeper subscriber. ZooKeeper will start watching
// the given path for changes and update the Subscriber endpoints.
func NewSubscriber(c Client, path string, factory sd.Factory, logger log.Logger) (*Subscriber, error) {
s := &Subscriber{
client: c,
path: path,
cache: cache.New(factory, logger),
logger: logger,
quitc: make(chan struct{}),
}
err := s.client.CreateParentNodes(s.path)
if err != nil {
return nil, err
}
instances, eventc, err := s.client.GetEntries(s.path)
if err != nil {
logger.Log("path", s.path, "msg", "failed to retrieve entries", "err", err)
return nil, err
}
logger.Log("path", s.path, "instances", len(instances))
s.cache.Update(instances)
go s.loop(eventc)
return s, nil
}
开发者ID:crezam,项目名称:kit,代码行数:28,代码来源:subscriber.go
示例10: NewCluster
// NewCluster returns a usable cluster. Host should be of the form
// "http://hostname:8080".
func NewCluster(config *restclient.Config, kubectl string, logger log.Logger) (*Cluster, error) {
client, err := k8sclient.New(config)
if err != nil {
return nil, err
}
extclient, err := k8sclient.NewExtensions(config)
if err != nil {
return nil, err
}
if kubectl == "" {
kubectl, err = exec.LookPath("kubectl")
if err != nil {
return nil, err
}
} else {
if _, err := os.Stat(kubectl); err != nil {
return nil, err
}
}
logger.Log("kubectl", kubectl)
c := &Cluster{
config: config,
client: extendedClient{client, extclient},
kubectl: kubectl,
status: newStatusMap(),
actionc: make(chan func()),
logger: logger,
}
go c.loop()
return c, nil
}
开发者ID:weaveworks,项目名称:flux,代码行数:35,代码来源:kubernetes.go
示例11: dial
func dial(d Dialer, network, address string, logger log.Logger) net.Conn {
conn, err := d(network, address)
if err != nil {
logger.Log("err", err)
conn = nil // just to be sure
}
return conn
}
开发者ID:basvanbeek,项目名称:kit,代码行数:8,代码来源:manager.go
示例12: main
func main() {
var (
listen = flag.String("listen", ":8080", "HTTP listen address")
proxy = flag.String("proxy", "", "Optional comma-separated list of URLs to proxy uppercase requests")
)
flag.Parse()
var logger log.Logger
logger = log.NewLogfmtLogger(os.Stderr)
logger = log.NewContext(logger).With("listen", *listen).With("caller", log.DefaultCaller)
ctx := context.Background()
fieldKeys := []string{"method", "error"}
requestCount := kitprometheus.NewCounter(stdprometheus.CounterOpts{
Namespace: "my_group",
Subsystem: "string_service",
Name: "request_count",
Help: "Number of requests received.",
}, fieldKeys)
requestLatency := metrics.NewTimeHistogram(time.Microsecond, kitprometheus.NewSummary(stdprometheus.SummaryOpts{
Namespace: "my_group",
Subsystem: "string_service",
Name: "request_latency_microseconds",
Help: "Total duration of requests in microseconds.",
}, fieldKeys))
countResult := kitprometheus.NewSummary(stdprometheus.SummaryOpts{
Namespace: "my_group",
Subsystem: "string_service",
Name: "count_result",
Help: "The result of each count method.",
}, []string{})
var svc StringService
svc = stringService{}
svc = proxyingMiddleware(*proxy, ctx, logger)(svc)
svc = loggingMiddleware(logger)(svc)
svc = instrumentingMiddleware(requestCount, requestLatency, countResult)(svc)
uppercaseHandler := httptransport.NewServer(
ctx,
makeUppercaseEndpoint(svc),
decodeUppercaseRequest,
encodeResponse,
)
countHandler := httptransport.NewServer(
ctx,
makeCountEndpoint(svc),
decodeCountRequest,
encodeResponse,
)
http.Handle("/uppercase", uppercaseHandler)
http.Handle("/count", countHandler)
http.Handle("/metrics", stdprometheus.Handler())
logger.Log("msg", "HTTP", "addr", *listen)
logger.Log("err", http.ListenAndServe(*listen, nil))
}
开发者ID:cnicolov,项目名称:kit,代码行数:58,代码来源:main.go
示例13: spam
func spam(logger log.Logger, count int) error {
for i := 0; i < count; i++ {
err := logger.Log("key", i)
if err != nil {
return err
}
}
return nil
}
开发者ID:basvanbeek,项目名称:kit,代码行数:9,代码来源:concurrency_test.go
示例14: loggingMiddleware
// Transport Logging Middleware
func loggingMiddleware(logger log.Logger) endpoint.Middleware {
return func(next endpoint.Endpoint) endpoint.Endpoint {
return func(ctx context.Context, request interface{}) (interface{}, error) {
logger.Log("msg", "calling endpoint")
defer logger.Log("msg", "called endpoint")
return next(ctx, request)
}
}
}
开发者ID:petersellars,项目名称:go-kit-services,代码行数:10,代码来源:logging.go
示例15: logging
func logging(logger log.Logger) func(Add) Add {
return func(next Add) Add {
return func(ctx context.Context, a, b int64) (v int64) {
defer func(begin time.Time) {
logger.Log("a", a, "b", b, "result", v, "took", time.Since(begin))
}(time.Now())
v = next(ctx, a, b)
return
}
}
}
开发者ID:jllopis,项目名称:kit,代码行数:11,代码来源:enhancements.go
示例16: FromGRPCRequest
// FromGRPCRequest returns a grpc RequestFunc that tries to join with an
// OpenTracing trace found in `req` and starts a new Span called
// `operationName` accordingly. If no trace could be found in `req`, the Span
// will be a trace root. The Span is incorporated in the returned Context and
// can be retrieved with opentracing.SpanFromContext(ctx).
func FromGRPCRequest(tracer opentracing.Tracer, operationName string, logger log.Logger) func(ctx context.Context, md *metadata.MD) context.Context {
return func(ctx context.Context, md *metadata.MD) context.Context {
var span opentracing.Span
wireContext, err := tracer.Extract(opentracing.TextMap, metadataReaderWriter{md})
if err != nil && err != opentracing.ErrSpanContextNotFound {
logger.Log("err", err)
}
span = tracer.StartSpan(operationName, ext.RPCServerOption(wireContext))
return opentracing.ContextWithSpan(ctx, span)
}
}
开发者ID:crezam,项目名称:kit,代码行数:16,代码来源:grpc.go
示例17: ToGRPCRequest
// ToGRPCRequest returns a grpc RequestFunc that injects an OpenTracing Span
// found in `ctx` into the grpc Metadata. If no such Span can be found, the
// RequestFunc is a noop.
func ToGRPCRequest(tracer opentracing.Tracer, logger log.Logger) func(ctx context.Context, md *metadata.MD) context.Context {
return func(ctx context.Context, md *metadata.MD) context.Context {
if span := opentracing.SpanFromContext(ctx); span != nil {
// There's nothing we can do with an error here.
if err := tracer.Inject(span.Context(), opentracing.TextMap, metadataReaderWriter{md}); err != nil {
logger.Log("err", err)
}
}
return ctx
}
}
开发者ID:crezam,项目名称:kit,代码行数:14,代码来源:grpc.go
示例18: EndpointLoggingMiddleware
// EndpointLoggingMiddleware returns an endpoint middleware that logs the
// duration of each invocation, and the resulting error, if any.
func EndpointLoggingMiddleware(logger log.Logger) endpoint.Middleware {
return func(next endpoint.Endpoint) endpoint.Endpoint {
return func(ctx context.Context, request interface{}) (response interface{}, err error) {
defer func(begin time.Time) {
logger.Log("error", err, "took", time.Since(begin))
}(time.Now())
return next(ctx, request)
}
}
}
开发者ID:crezam,项目名称:kit,代码行数:14,代码来源:endpoints.go
示例19: FromGRPCRequest
// FromGRPCRequest returns a grpc RequestFunc that tries to join with an
// OpenTracing trace found in `req` and starts a new Span called
// `operationName` accordingly. If no trace could be found in `req`, the Span
// will be a trace root. The Span is incorporated in the returned Context and
// can be retrieved with opentracing.SpanFromContext(ctx).
//
// The logger is used to report errors and may be nil.
func FromGRPCRequest(tracer opentracing.Tracer, operationName string, logger log.Logger) func(ctx context.Context, md *metadata.MD) context.Context {
return func(ctx context.Context, md *metadata.MD) context.Context {
span, err := tracer.Join(operationName, opentracing.TextMap, metadataReaderWriter{md})
if err != nil {
span = tracer.StartSpan(operationName)
if err != opentracing.ErrTraceNotFound {
logger.Log("err", err)
}
}
return opentracing.ContextWithSpan(ctx, span)
}
}
开发者ID:subodhchhabra,项目名称:kit,代码行数:19,代码来源:grpc.go
示例20: makeEndpoints
func makeEndpoints(addrs []*net.SRV, f loadbalancer.Factory, logger log.Logger) []endpoint.Endpoint {
endpoints := make([]endpoint.Endpoint, 0, len(addrs))
for _, addr := range addrs {
endpoint, err := f(addr2instance(addr))
if err != nil {
logger.Log("instance", addr2instance(addr), "err", err)
continue
}
endpoints = append(endpoints, endpoint)
}
return endpoints
}
开发者ID:timblackwell,项目名称:kit,代码行数:12,代码来源:publisher.go
注:本文中的github.com/go-kit/kit/log.Logger类示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论